先日Androidの勉強をしていたら、以下のようなサンプルコードを見かけました。
Kotlin
...
.setPositiveButton("OK") { _, _ ->
(activity as MainActivity).checkQuizCount()
}
...
setPositionButtonの第一引数に”OK”を渡して、…??、ラムダ?
そのあとのラムダの意味が分からず、調べているとこれは、これはトレーリングラムダ(trailing lambda)という文法ということがわかりました。
トレーリングラムダ(trailing lambda)とは
関数の最後の引数が、関数の場合は呼び出し時のラムダを丸カッコの外に出すことができる文法のことです。
例えば以下のcalc関数は、最後の引数として関数を受け取ります。この場合トレーリングラムダを使うことができます。
Kotlin
fun calc(num: Int, calcFunc: (Int) -> Int): Int {
return calcFunc(num)
}
トレーリングラムダを使ったほうが、かっこが少なく読みやすいですね。
Kotlin
calc(2) { x -> 2 * x } // トレーリングラムダ
calc(2, { x -> 2 * x }) // 普通に呼び出し
蛇足ですが、関数だけを受け取る場合は、丸カッコをすべて省略できます。
Kotlin
fun executeFunc(f: () -> Unit): Unit {
f()
}
executeFunc{ println("Hello") } // Hello