kotlin之lambda表達式

1. 概念

Kotlin中的Lambda表達式是一種\color{red}{簡潔的語法形式},用于表示一個\color{red}{匿名函數(shù)}。Lambda表達式可以在函數(shù)中作為\color{red}{參數(shù)傳遞},也可以被\color{red}{賦值給一個變量或常量}

2. 基本語法:

{ 參數(shù)列表 -> 函數(shù)體 }

其中,參數(shù)列表是可選的,如果有參數(shù),需要用逗號分隔每個參數(shù),而函數(shù)體是必須的,用于定義函數(shù)的操作。

例如,下面的Lambda表達式表示一個接受兩個整數(shù)參數(shù)并返回它們的和的函數(shù):

val sum = { a: Int, b: Int -> a + b }
// 參數(shù)類型可以從上下文中推斷出來,則可以省略參數(shù)類型
// 下面的代碼等價于上面的代碼
val sum = { a, b -> a + b }

3. 隱式參數(shù):

如果Lambda表達式\color{red}{只有一個參數(shù)},并且該參數(shù)的類型可以從上下文中推斷出來,則可以\color{red}{使用關(guān)鍵字`it`}來引用該參數(shù)

val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val evenNumbers = numbers.filter { it % 2 == 0 }

在這個例子中,filter函數(shù)接受一個Lambda表達式作為參數(shù),并返回一個包含所有滿足條件的元素的新列表。

4. 尾隨Lambda表達式

在Kotlin中,如果\color{red}{一個函數(shù)的最后一個參數(shù)是一個函數(shù)類型},我們可以\color{red}{將Lambda表達式寫在圓括號外面的大括號內(nèi)},而不是在圓括號內(nèi)傳遞Lambda表達式。這種語法被稱為"尾隨Lambda表達式"或"末尾Lambda表達式"。

例如:\color{red}{}

// 最后一個參數(shù) operation 是一個函數(shù)類型
fun calculate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

// 我們在調(diào)用的時候直接使用 {a,b -> a + b}
val sum = calculate(10, 20) { a, b -> a + b }
val difference = calculate(30, 15) { a, b -> a - b }

5. 表達式返回結(jié)果

在Lambda表達式中可以使用return語句返回結(jié)果。但是,如果Lambda表達式是在一個函數(shù)內(nèi)部定義的,則return語句將返回函數(shù)的結(jié)果,而不是Lambda表達式的結(jié)果。如果要返回Lambda表達式的結(jié)果,則需要使用標簽來指定返回的是Lambda表達式的結(jié)果

例如:

fun main() {    
    val numbers = listOf(1, 2, 3, 4, 5)     
    val result = numbers.map {        
        if (it == 3) return@map "three"                         "number $it"    
    }
    // 打印的結(jié)果是[number 1, number 2, three, number 4, number 5]
    println(result)
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容