Lambda
是一個沒有名字的函式。 Lambda
是用花括號{}
定義的,它將變數作為引數(如果有的話)和函式體。 函式體在變數(如果有)之後寫入,後跟 ->
運算子。
lambda的語法
{ variable -> body_of_function}
在討論學習lambda
之前,來看一個使用普通函式新增兩個數位的簡單範例。
一般函式:兩個數位相加
在這個例子中,建立一個函式addNumber()
,它傳遞從main
函式呼叫的兩個引數(a
,b
)。
fun main(args: Array<String>){
addNumber(5,10)
}
fun addNumber(a: Int, b: Int){
val add = a + b
println(add)
}
執行上面範例程式碼,得到以下結果 -
15
Lambda函式:兩個數位相加
上面的程式使用lambda
函式重寫如下:
fun main(args: Array<String>){
val myLambda: (Int) -> Unit= {s: Int -> println(s) } //lambda function
addNumber(5,10,myLambda)
}
fun addNumber(a: Int, b: Int, mylambda: (Int) -> Unit ){ //high level function lambda as parameter
val add = a + b
mylambda(add) // println(add)
}
執行上面範例程式碼,得到以下結果 -
15
在上面的程式中,建立一個lambda
表示式{s: Int -> println(s) }
,其返回型別為Unit
。 lambda
函式作為高階函式addNumber(5,10,myLambda)
中的引數填充。 函式定義中的變數mylambda
實際上是一個lambda
函式。 mylambda
的函式主體已經在lambda
函式中給出。