scala函数式编程
1.非匿名函数
def fun1(name : String ){println(name)}
val fun1_v = fun1 _
fun1_v("hello function")
2.匿名函数
val fun2 = (content :String)=>
println(content)
fun2("hadoop")
3.高阶函数
//函数的参数为另外一个函数
def hiScala= (content :String )=>println(content)
def bigData (func:String =>Unit,content:String) {func(content)}
bigData(hiScala,"hiScala")
//函数的返回值为另外一个函数
def func_Returned(content:String)=(message : String)=>println(content+" "+ message)
val returned = func_Returned("spark")
returned("scala")
5.闭包
//函数执行完成后里面的变量仍然可以使用
//函数作用域外仍然可以访问变量
scala> def func_Returned(content:String)=(message : String)=>println(content+"
"+ message)
func_Returned: (content: String)String => Unit
scala> val returned = func_Returned("spark")
returned: String => Unit = <function1>
scala> returned("scala")
spark scala
6.map操作
val list = List("a","b","c")
val cal = list.map("this is "+_)
cal.flatMap(_.split(" "))
7.颗粒化
//颗粒化使用了闭包的功能
// (1 to 100).reduceLeft(_+_)为颗粒化的代表
scala> def sum (x:Int ,y:Int)= x+y
sum: (x: Int, y: Int)Int
scala> sum (1,2)
res4: Int = 3
scala> def sumCurrying(x:Int)=(y:Int)=>x+y
sumCurrying: (x: Int)Int => Int
scala> sumCurrying(2)(1)
res5: Int = 3
scala> def sumCurrying_better(x:Int)(y:Int)=x+y
sumCurrying_better: (x: Int)(y: Int)Int
scala> sumCurrying_better(1)(2)
res6: Int = 3