--函数返回函数
scala> def fun1(name1:String) = (name2:String) => println(name1+" "+name2)
fun1: (name1: String)String => Unit
--等号=左边是函数,右边返回值是匿名函数。函数返回函数
scala> val fun1_v = fun1("Spark") --接收name1参数
fun1_v: String => Unit = <function1>
scala> fun1_v("Scala") --接收name2参数
Spark Scala
----------------------------------------------------
--高阶函数一步一步推导成最简洁的语法
scala> def spark(func:(String)=>Unit,name:String){func(name)}
spark: (func: String => Unit, name: String)Unit
spark有2个参数,一个是func,一个是name,输出是Unit
func有1个参数,String类型的,输出是Unit
scala> spark((name:String)=>println(name),"Scala") --传入匿名函数
Scala
scala> spark((name)=>println(name),"Scala") --类型推断,可以省略类型String
Scala
scala> spark(name=>println(name),"Scala") --参数只有1个,可省略括号
Scala
scala> spark(println(_),"Scala") --参数只使用1次,可省略参数名称,使用时用下划线代替
Scala
scala> spark(println _,"Scala") --参数只有1个,可省略括号
Scala
scala> spark(println,"Scala") --参数只使用1次,可省略参数名称
Scala
scala> //
scala> val arr = Array(1,2,3,4,5,6)
arr: Array[Int] = Array(1, 2, 3, 4, 5, 6)
scala> arr.map(2*_)
res167: Array[Int] = Array(2, 4, 6, 8, 10, 12)
scala> arr.map(2*_).foreach(println _)
2
4
6
8
10
12
scala> arr.map(2*_).foreach(println)
2
4
6
8
10
12
scala> arr.map(2*_).filter(_>6)foreach(println)
8
10
12
!!scala 【经典】一步一步推导!!高阶函数,类型推断
最新推荐文章于 2023-09-26 01:30:00 发布