Kotlin では、関数を変数などに代入したり、関数の引数に指定する場合、
わざわざ関数を定義しなくてもよい方法があります。それがラムダ式です。
ラムダ式
フォーマット
{ 引数: 型 -> 処理 }
Kotlin のラムダ式では、波括弧 { } を使用します。
引数の2乗を返す関数をラムダ式で記述すると、次のようになります。
|
1 2 3 4 |
val square: (Int) -> Int = { i: Int -> i * i } |
関数から値を返す時に return を使用する必要はありません。
「式」と呼ばれていることからも分かる通り、最後に評価された結果が返されます。
ラムダ式と高階関数
「高階関数」で紹介した first 関数を使って、空白文字を探す関数を記述してみます。
|
1 2 3 4 5 6 7 |
fun firstWhitespace(str: String): Int { val isWhitespace: (Char) -> Boolean = { it.isWhitespace() } return first(str, isWhitespace) } |
isWhitespace の引数は、it で参照することが可能で、省略することが出来ます。
ラムダ式を引数に
isWhitespace という変数を定義するのも面倒くさい。そう思った方はプログラミングのセンスがあります。
Kotlin のラムダ式は、直接引数として与えることもできます。
|
1 2 3 |
fun firstWhitespace(str: String): Int = first(str, { it.isWhitespace() }) |