- --函数返回函数
- 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
版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/gdmzlhj1/article/details/50772284