本文首發於公眾號“AntDream”,歡迎微信搜索“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點
Kotlin的lambda表達式是一種簡明且靈活的語法結構,用於表示函數類型的匿名函數(即沒有名字的函數)。Lambda表達式廣泛應用於Kotlin的集合操作、函數式編程以及許多標準庫函數中。
Lambda表達式語法
一個典型的Kotlin lambda表達式的基本語法如下:
{ 參數列表 -> 函數體 }
- 參數列表: Lambda表達式可以有多個參數,用逗號分隔。在參數列表和函數體之間用箭頭符號 (
->) 分隔。 - 函數體: Lambda表達式的具體操作部分。
例如,一個簡單的lambda表達式:
val sum = { a: Int, b: Int -> a + b }
println(sum(3, 4)) // 輸出: 7
使用例子
1. 基本例子
這個例子展示了一個簡單的沒有參數的lambda。
val sayHello = { println("Hello, World!") }
sayHello() // 輸出: Hello, World!
2. 帶參數的Lambda表達式
一個更復雜的lambda表達式,可以使用多個參數。
val add = { a: Int, b: Int -> a + b }
println(add(5, 3)) // 輸出: 8
3. 在集合操作中的應用
Kotlin的標準庫提供了許多基於lambda表達式的集合操作。
mapFunction:
val numbers = listOf(1, 2, 3, 4)
val doubled = numbers.map { it * 2 }
println(doubled) // 輸出: [2, 4, 6, 8]
filterFunction:
val numbers = listOf(1, 2, 3, 4)
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers) // 輸出: [2, 4]
4. 高階函數
lambda表達式可以作為參數傳遞給高階函數(即,以函數作為參數或返回值的函數)。
fun performOperation(x: Int, y: Int, operation: (Int, Int) -> Int): Int {
return operation(x, y)
}
val result = performOperation(5, 3, { a, b -> a * b })
println(result) // 輸出: 15
5. it關鍵字
如果一個lambda表達式只有一個參數,可以省略參數列表,直接使用it來代表這個參數。
val numbers = listOf(1, 2, 3, 4)
val tripled = numbers.map { it * 3 }
println(tripled) // 輸出: [3, 6, 9, 12]
6. 返回值
Lambda表達式返回函數體的最後一個表達式的值。
val subtract = { a: Int, b: Int ->
println("Subtracting $b from $a")
a - b
}
println(subtract(10, 5)) // 輸出: Subtracting 5 from 10 以及 5
7. 類型推斷
Kotlin擁有強大的類型推斷機制,能夠自動推斷出lambda表達式的參數和返回值類型。
val multiply: (Int, Int) -> Int = { a, b -> a * b }
println(multiply(4, 2)) // 輸出: 8
總結
Kotlin的lambda表達式使得編寫高度簡潔和可讀的代碼變得更加容易。這些表達式在處理集合、編寫高階函數、以及實踐函數式編程時尤為強大和實用。掌握lambda表達式可以顯著提升你的Kotlin編程技巧和代碼質量。
歡迎關注我的公眾號AntDream查看更多精彩文章!