Taiwan Kotlin User Group 的網站,在台灣推廣 Kotlin 程式語言,舉辦相關活動。如果對 Kotlin 有興趣,想要多瞭解一些,歡迎來我們的社群一起聚會!
下面列出 Kotlin 的函數式編程慣用寫法
在 Kotlin 內我們可以定義函數
fun plus(x: Int, y: Int) = x + y
由於 Kotlin 內的函數是可以當參數或回傳值的
所以也可以設計出
接收 (Int, Int) -> Int
的函數作為參數
的函數
fun calc(x: Int, y: Int, opr: (Int, Int) -> Int) = opr(x, y)
使用方法如下
val plus = fun (x: Int, y: Int) = x + y
calc(2, 2, plus) // 4
如果不想使用匿名函數的做法
也可以用 ::
符號
fun plus(x: Int, y: Int) = x + y
calc(2, 2, ::plus) // 4
如果某個函數的最後一個參數,剛好是一個函數
可以直接將函數寫在 {}
內
calc(2, 2) { x, y -> x + y } // 4
我們也可以設計某個函數
會將函數做為回傳值
fun plus(x: Int, y: Int) = x + y
fun add(): (Int, Int) -> Int = ::plus
val opr = add()
opr(2, 2) // 4
我們可以直接宣告一個沒有名稱的函數
然後傳入變數
特別注意變數的型態如何宣告
fun plus(x: Int, y: Int) = x + y
val plusOne: (Int) -> Int = {x: Int -> plus(x, 1)}
plusOne(2) // 3
Kotlin 可以透過型態推斷,得知 plusOne
的型態
所以可以省略
val plusOne = {x: Int -> plus(x, 1)}
也可以反過來利用型態推斷
省略 x
的型態
val plusOne: (Int) -> Int = {x -> plus(x, 1)}
像這樣只有一個參數的匿名函數
我們可以用 it
取代掉參數的宣告
val plusOne:(Int) -> Int = { plus(it, 1) }
如果匿名函數內只有一個其他函數
可以用 ::
符號取得
val add = ::plus
想了解更多 Kotlin 的寫法嗎?
可以看看 Kotlin 慣用寫法
或加入 kotlin.tips 的 Kotlin 讀書會 !