feat:ChatGPT第 6 课:占位符 _、参数类型推断、匿名函数简写。
This commit is contained in:
@@ -0,0 +1,62 @@
|
|||||||
|
package practise6.demo
|
||||||
|
|
||||||
|
/*
|
||||||
|
第 6 课:占位符 _、参数类型推断、匿名函数简写。
|
||||||
|
*/
|
||||||
|
object Demo {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
/*
|
||||||
|
这一课的目标不是单纯记住 _,而是让你看到下面这些代码时,知道它们为什么等价:
|
||||||
|
(x: Int) => x * 2
|
||||||
|
↓
|
||||||
|
x => x * 2
|
||||||
|
↓
|
||||||
|
_ * 2
|
||||||
|
*/
|
||||||
|
println("====为什么等价====")
|
||||||
|
val test = (x: Int) => x * 2
|
||||||
|
val test2: Int => Int = x => x * 2
|
||||||
|
val test3: Int => Int = _ * 2
|
||||||
|
println(test(10))
|
||||||
|
println(test2(10))
|
||||||
|
println(test3(10))
|
||||||
|
|
||||||
|
// filter 也一样
|
||||||
|
println("====filter====")
|
||||||
|
val nums = List(1, 2, 3, 4, 5)
|
||||||
|
println(nums.filter(x => x >= 3))
|
||||||
|
println(nums.filter(_ >= 3))
|
||||||
|
|
||||||
|
// 链式调用
|
||||||
|
println("====链式调用====")
|
||||||
|
println(nums
|
||||||
|
.filter(x => x % 2 == 0)
|
||||||
|
.map(x => x * 10))
|
||||||
|
|
||||||
|
println(nums
|
||||||
|
.filter(_ % 2 == 0)
|
||||||
|
.map(_ * 10))
|
||||||
|
|
||||||
|
println("====一个 _ 对应一个参数====")
|
||||||
|
// 一个 _ 对应一个参数
|
||||||
|
val double: Int => Int = _ * 2 // 一个 `_` 对应 一个参数
|
||||||
|
|
||||||
|
// 第一个 _ → 第一个参数,第二个 _ → 第二个参数,相当于(a, b) => a + b
|
||||||
|
val add: (Int, Int) => Int = _ + _
|
||||||
|
val add2: (Int, Int) => Int = (a, b) => a + b
|
||||||
|
println(add(10, 20))
|
||||||
|
println(add2(10, 20))
|
||||||
|
|
||||||
|
println("====再看 String====")
|
||||||
|
//再看 String,_ 并不只适用于数字。
|
||||||
|
val names = List("Tom", "Jack", "Alice")
|
||||||
|
val resultName = names.map(x => x.toUpperCase)
|
||||||
|
val resultName2 = names.map(_.toUpperCase)
|
||||||
|
println(resultName)
|
||||||
|
println(resultName2)
|
||||||
|
val resultName3 = names.filter(x => x.length > 3)
|
||||||
|
val resultName4 = names.filter(_.length > 3)
|
||||||
|
println(resultName3)
|
||||||
|
println(resultName4)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package practise6.exercises
|
||||||
|
|
||||||
|
/*
|
||||||
|
练习 1
|
||||||
|
|
||||||
|
把:
|
||||||
|
val double = (x: Int) => x * 2
|
||||||
|
改成使用 _ 的写法。
|
||||||
|
|
||||||
|
要求仍然:
|
||||||
|
println(double(10))
|
||||||
|
|
||||||
|
输出:
|
||||||
|
20
|
||||||
|
*/
|
||||||
|
object Exercises1 {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
val double: Int => Int = _ * 2
|
||||||
|
println(double(10))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package practise6.exercises
|
||||||
|
|
||||||
|
/*
|
||||||
|
练习 2
|
||||||
|
|
||||||
|
把:
|
||||||
|
nums.map(x => x * 10)
|
||||||
|
改成 _。
|
||||||
|
|
||||||
|
给:
|
||||||
|
val nums = List(1, 2, 3, 4, 5)
|
||||||
|
|
||||||
|
结果:
|
||||||
|
List(10, 20, 30, 40, 50)
|
||||||
|
*/
|
||||||
|
object Exercises2 {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
val nums = List(1, 2, 3, 4, 5)
|
||||||
|
println(nums.map(_ * 10))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package practise6.exercises
|
||||||
|
|
||||||
|
/*
|
||||||
|
练习 3
|
||||||
|
|
||||||
|
把:
|
||||||
|
nums.filter(x => x % 2 == 0)
|
||||||
|
改成 _。
|
||||||
|
*/
|
||||||
|
object Exercises3 {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
val nums = List(1, 2, 3, 4, 5)
|
||||||
|
println(nums.filter(_ % 2 == 0))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package practise6.exercises
|
||||||
|
|
||||||
|
/*
|
||||||
|
练习 4
|
||||||
|
|
||||||
|
把:
|
||||||
|
val add: (Int, Int) => Int = (a, b) => a + b
|
||||||
|
改成 _。
|
||||||
|
|
||||||
|
要求:
|
||||||
|
println(add(10, 20))
|
||||||
|
|
||||||
|
输出:
|
||||||
|
30
|
||||||
|
*/
|
||||||
|
object Exercises4 {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
val add: (Int, Int) => Int = _ + _
|
||||||
|
println(add(10, 20))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package practise6.exercises
|
||||||
|
|
||||||
|
/*练习 5 ⭐
|
||||||
|
|
||||||
|
给:
|
||||||
|
val nums = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
|
||||||
|
|
||||||
|
只使用 _,完成:
|
||||||
|
1. 保留偶数
|
||||||
|
2. 每个偶数乘 10
|
||||||
|
3. 再加 1
|
||||||
|
|
||||||
|
最终:
|
||||||
|
List(21, 41, 61, 81, 101)
|
||||||
|
|
||||||
|
要求尝试写成:
|
||||||
|
nums
|
||||||
|
.filter(...)
|
||||||
|
.map(...)
|
||||||
|
.map(...)*/
|
||||||
|
object Exercises5 {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
val nums = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
|
||||||
|
val result = nums
|
||||||
|
.filter(_ % 2 == 0)
|
||||||
|
.map(_ * 10)
|
||||||
|
.map(_ + 1)
|
||||||
|
println(result)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package practise6.exercises
|
||||||
|
|
||||||
|
object Exercises6 {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
val add: (Int, Int) => Int = _ + _
|
||||||
|
val multiply: (Int, Int) => Int = _ * _
|
||||||
|
println(add(3, 4))
|
||||||
|
println(multiply(3, 4))
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user