高階函數
高階函數是指可以接受函數作為參數或返回函數的函數。Kotlin 中的所有函數都是高階函數。
例如,以下函數 add()
接受一個函數作為參數,並使用該函數來處理輸入的兩個數字:
fun add(x: Int, y: Int, f: (Int, Int) -> Int) {
println(f(x, y))
}
以下函數 double()
返回一個函數,該函數將輸入的數字乘以 2:
fun double(x: Int): (Int) -> Int {
return { y: Int -> y * 2 }
}
函數參數
函數參數可以是任意類型的值,包括函數。Kotlin 中的函數參數可以有默認值,也可以是可選參數。
例如,以下函數 add()
接受兩個數字和一個函數作為參數:
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:
fun double(x: Int): (Int) -> Int {
return { y: Int -> y * 2 }
}
函數柯里化
函數柯里化是一種將函數轉換為接受更少參數的函數的方法。柯里化可以通過使用高階函數來實現。
例如,以下函數 add()
接受兩個數字作為參數:
fun add(x: Int, y: Int) = x + y
我們可以將 add()
函數柯里化為接受一個數字作為參數的函數,該函數將返回另一個函數,該函數接受另一個數字作為參數並返回兩個數字的和:
fun add(x: Int) = fun(y: Int) = x + y
例如,以下程式碼使用 add()
函數柯里化來計算 1 加 2 和 3 加 4:
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 意見:
張貼留言