Spark基礎-Scala高階函式
阿新 • • 發佈:2019-02-02
核心
1、scala高階函式
package com.xlucas
/**
* Created by xlucas on 2017/8/20 0020.
*
* 1、函式和變數一樣作為scala語言的一等公民,函式可以直接賦值給變數
* 2、函式更多的方式是匿名函式,定義的時候只需要說明輸入引數的型別和函式體即可
* 3、函式可以作為引數直接傳遞給函式,函式作為函式的引數傳遞的程式設計方式是稱之為高階函式
* 4、函數語言程式設計的返回值可以是函式,當函式的返回值是函式的時候,這個時候就表明scala的函式實現了閉包
* 閉包的內幕是:scala的函式背後是類和物件,所以scala的引數作為了物件的成員,後續可以繼續訪問
* 5、複雜的函數語言程式設計中經常使用,可以維護變數在記憶體中的狀態,實現返回函式的鏈式功能
*/
object FunctionOop {
def main(args: Array[String]): Unit = {
val say=sayHello _ //這個需要用_符合來賦值操作
say("spark")
val f=(name:String)=>println("hi" +name)//匿名函式
f("spark")
def getName(func:(String)=>Unit,name:String): Unit ={//函式做為引數
func(name)
}
getName(f,"scala")
Array(1 to 10: _* ).map{(item:Int)=>2*item}.foreach{x=>println(x)}//陣列來做為輸入在操作
def funResult(message:String)=(name:String)=>println(message+" :" +name)
funResult("hello")("java")// currying 函式寫法 柯里化
}
def sayHello(name:String): Unit ={
println("hi" + name)
}
}