kotlin之Lambda表達式

Java8中引入,匿名函數。java

普通的Lambda表達式相似對應kotlin普通函數的聲明,而帶接收者的lambda表達式則相似對應kotlin的擴展函數。bash

lambda的基本語法

{ variable -> body_of_function} 示例:{ x:Int, y:Int -> x + y }函數

lambda表達式始終用花括號包圍,實參並無用括號括起來。箭頭把實參列表和lambda的函數體隔開spa

lambda做爲函數的參數傳遞

示例:val sum = { x: Int, y: Int -> x + y }code

能夠把lambda表達式存儲在一個變量中,把這個變量當作普通函數對待,也能夠直接寫做函數參數。開發

lambda表達式的返回值
val isOddNumber = { number: Int ->
        println("number is $number")
        number % 2 == 1
    }
複製代碼

lambda表達式返回值老是返回函數體內部最後一行表達式的值get

invoke 方法
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

結合kotlin 擴展函數使用

Kotlin與java對比it


注意:語法簡化是把雙刃劍,簡化當然不錯,使用簡單方便,可是不能濫用,也須要考慮到代碼的可讀性.上圖中Lambda化簡成的最簡單形式用it這種,通常在多個Lambda嵌套的時候不建議使用,嚴重形成代碼可讀性,到最後估計連開發者都不知道it指代什麼了。io

相關文章
相關標籤/搜索