歡迎光臨 紫楓粉絲頁

Kotlin 的函數式編程

 高階函數

高階函數是指可以接受函數作為參數或返回函數的函數。Kotlin 中的所有函數都是高階函數。

例如,以下函數 add() 接受一個函數作為參數,並使用該函數來處理輸入的兩個數字:

Kotlin
fun add(x: Int, y: Int, f: (Int, Int) -> Int) {
    println(f(x, y))
}

以下函數 double() 返回一個函數,該函數將輸入的數字乘以 2:

Kotlin
fun double(x: Int): (Int) -> Int {
    return { y: Int -> y * 2 }
}

函數參數

函數參數可以是任意類型的值,包括函數。Kotlin 中的函數參數可以有默認值,也可以是可選參數。

例如,以下函數 add() 接受兩個數字和一個函數作為參數:

Kotlin
fun add(x: Int, y: Int, f: (Int, Int) -> Int = { x, y -> x + y }) {
    println(f(x, y))
}

add() 函數中,函數參數 f 的默認值是 { x, y -> x + y }。因此,如果不傳遞 f 參數,則 add() 函數將使用 x + y 來計算兩個數字的和。

函數返回值

函數可以返回任意類型的值,包括函數。

例如,以下函數 double() 返回一個函數,該函數將輸入的數字乘以 2:

Kotlin
fun double(x: Int): (Int) -> Int {
    return { y: Int -> y * 2 }
}

函數柯里化

函數柯里化是一種將函數轉換為接受更少參數的函數的方法。柯里化可以通過使用高階函數來實現。

例如,以下函數 add() 接受兩個數字作為參數:

Kotlin
fun add(x: Int, y: Int) = x + y

我們可以將 add() 函數柯里化為接受一個數字作為參數的函數,該函數將返回另一個函數,該函數接受另一個數字作為參數並返回兩個數字的和:

Kotlin
fun add(x: Int) = fun(y: Int) = x + y

例如,以下程式碼使用 add() 函數柯里化來計算 1 加 2 和 3 加 4:

Kotlin
val add1 = add(1)
val add2 = add(2)

println(add1(2)) // 3
println(add2(4)) // 6

總結

Kotlin 中的函數式編程提供了一種靈活和簡潔的方式來編寫程式碼。高階函數、函數參數和函數柯里化都是函數式編程的重要概念。


深入淺出學會編寫程式: https://pse.is/3ksear

Kotlin 實戰手冊: https://bookstw.link/5g3bsy

程式新手學習發問區,問都給問!!: https://www.facebook.com/groups/914880435669061

紫楓FB專頁: https://www.facebook.com/tbpfs2/

紫楓blog: https://tbpfs1.blogspot.com/

斗內專線: https://pse.is/KUYMP

0 意見: