Introduction
Lambdas
問題
Kotlin は関数型プログラミングをサポートしています。Kotlin でラムダ式について学びましょう。
ラムダ式を any
関数に渡して、コレクションに偶数が含まれているかどうかを確認できます。
any
関数は条件(述語)を引数として受け取り、少なくとも1つの要素がその条件を満たす場合に true を返します。
解答
fun containsEven(collection: Collection<Int>): Boolean =
collection.any { it % 2 == 0 }
解説
Kotlin 公式ドキュメント > it: implicit name of a single parameter
it: 単一のパラメーターの暗黙的な名前
ラムダ式でパラメーターが 1 つだけの場合は非常によくあるパターンです。
もしコンパイラーがパラメーターなしでシグネチャを解析できる場合、そのパラメーターを明示的に宣言する必要はなく、->
を省略できます。この場合、パラメーターは it
という名前で暗黙的に宣言されます。
ints.filter { it > 0 } // このリテラルは型 '(it: Int) -> Boolean' のラムダ式です
おわりに
パラメーターが 1 つだけの場合に ->
を省略できるのは知らなかった!!!
そして、.any()
が boolean を返してくれることも知らなかった!!!
Koans を今までスルーしてきてしまったことに後悔している。
先人たちの「公式ドキュメントにあるチュートリアルをまずやる」は正しいと改めて感じる。騙されたと思ってとりあえずやってみようと思う。「ほんまや〜」って某S氏の声が聞こえてきそうだ(笑)