【学習kotlinシリーズ】ラムダ関数
Qiitaでことりん学習帳を発売しています!
ラムダ関数とは
ラムダ関数とは、関数を定義して関数オブジェクトを生成するのではなく、関数オブジェクトを直接生成する機能。定義の仕方は以下の例の通り。
// 標準的なラムダ関数の定義
val square1: (Int) -> Int = {
i: Int -> i * i
}
型推論を利用することにより、もう少し簡単な形で定義できる。
// 型推論を利用したラムダ関数の定義1
val square2: (Int) -> Int = {
i -> i * i
}
// 型推論を利用したラムダ関数の定義2
val square3 = {
i: Int -> i * i
}
また、ラムダ関数には暗黙的に「it」という変数があり、これを利用することにより更に簡略化できる。
// itを利用したラムダ関数の定義
val square4: (Int) -> Int = {
it * it
}
ラムダ関数を高階関数と組み合わせると、スマートになる。
fun find(str: String, predicate:(Char) -> Boolean): Int {
tailrec fun go(str: String, index: Int): Int =
when {
str.isEmpty() -> -1
predicate(str.first()) -> index
else -> go(str.drop(1), index+1)
}
return go(str, 0)
}
fun findLower(str: String): Int {
return find(str, {it.isLowerCase()})
}
fun main(args: Array<String>){
println(findLower("ASFNSFOsNSFON"))
}
findLower関数がとてもスマートになった。
ディスカッション
コメント一覧
まだ、コメントがありません