博客 / 詳情

返回

Android經典面試題之Kotlin中Lambda表達式有哪些用法

本文首發於公眾號“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表達式的集合操作。

  • map Function:
val numbers = listOf(1, 2, 3, 4)
val doubled = numbers.map { it * 2 }
println(doubled)  // 輸出: [2, 4, 6, 8]
  • filter Function:
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查看更多精彩文章!

user avatar docker_app 頭像 redorblack 頭像 heyiming 頭像 gozhuyinglong 頭像 jellyfishmix 頭像 yexiaobai_616e2b70869ae 頭像
6 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.