Kotlin Lambda函式


Lambda是一個沒有名字的函式。 Lambda是用花括號{}定義的,它將變數作為引數(如果有的話)和函式體。 函式體在變數(如果有)之後寫入,後跟 -> 運算子。

lambda的語法

{ variable -> body_of_function}

在討論學習lambda之前,來看一個使用普通函式新增兩個數位的簡單範例。

一般函式:兩個數位相加

在這個例子中,建立一個函式addNumber(),它傳遞從main函式呼叫的兩個引數(ab)。

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) },其返回型別為Unitlambda函式作為高階函式addNumber(5,10,myLambda)中的引數填充。 函式定義中的變數mylambda實際上是一個lambda函式。 mylambda的函式主體已經在lambda函式中給出。