Java8中引入,匿名函數。java
普通的Lambda表達式相似對應kotlin普通函數的聲明,而帶接收者的lambda表達式則相似對應kotlin的擴展函數。bash
{ variable -> body_of_function}
示例:{ x:Int, y:Int -> x + y }
函數
lambda表達式始終用花括號包圍,實參並無用括號括起來。箭頭把實參列表和lambda的函數體隔開spa
示例:val sum = { x: Int, y: Int -> x + y }
code
能夠把lambda表達式存儲在一個變量中,把這個變量當作普通函數對待,也能夠直接寫做函數參數。開發
val isOddNumber = { number: Int ->
println("number is $number")
number % 2 == 1
}
複製代碼
lambda表達式返回值老是返回函數體內部最後一行表達式的值get
fun main(args: Array<String>) {
val add= {
left: Int, right: Int
->
left + right
}
println(add.invoke(2, 3))
}
複製代碼
一個變量 add,賦值爲一個 Lambda 表達式。Lambda 表達式用一對大括號括起來,後面先依次寫下參數及其類型,若是沒有就不寫,接着寫下 -> ,這代表後面的是函數體了,函數體的最後一句的表達式結果就是 Lambda 表達式的返回值,好比這裏的返回值就是參數求和的結果。後面咱們用 () 的形式調用這個 Lambda 表達式,其實這個 () 對應的是 invoke 方法。string
注意:語法簡化是把雙刃劍,簡化當然不錯,使用簡單方便,可是不能濫用,也須要考慮到代碼的可讀性.上圖中Lambda化簡成的最簡單形式用it這種,通常在多個Lambda嵌套的時候不建議使用,嚴重形成代碼可讀性,到最後估計連開發者都不知道it指代什麼了。io