1. ラムダ式とは?
ラムダ式は「名前を持たない関数(無名関数)」を簡潔に表現する構文です。
関数を変数に代入したり、他の関数に渡すときに使われます。
基本構文:
{ 引数リスト -> 処理 }
2. 基本的な例
val square = { x: Int -> x * x }
println(square(5)) // 25
-
x: Intが引数 -
x * xが処理本体 - 戻り値は最後の式から推論される
3. 型推論
型を明示しなくても、コンテキストから推論される場合があります。
val greet: (String) -> String = { name -> "Hello, $name" }
println(greet("Anna")) // Hello, Anna
4. 引数が1つのとき:it
引数が1つなら it という暗黙の名前で参照できます。
val numbers = listOf(1, 2, 3)
numbers.forEach { println(it) }
5. 引数なしのラムダ
引数がない場合は単純に () を省略できます。
val hello = { println("Hello, Kotlin!") }
hello()
6. 複数引数のラムダ
val add = { a: Int, b: Int -> a + b }
println(add(3, 4)) // 7
7. 高階関数と組み合わせて使う
ラムダ式はよく 高階関数 と一緒に使われます。
map
val doubled = listOf(1, 2, 3).map { it * 2 }
println(doubled) // [2, 4, 6]
filter
val evens = listOf(1, 2, 3, 4).filter { it % 2 == 0 }
println(evens) // [2, 4]
8. クロージャ(Closure)
ラムダ式は外部スコープの変数をキャプチャできます。
fun makeCounter(): () -> Int {
var count = 0
return { ++count } // 外部変数 count を保持
}
val counter = makeCounter()
println(counter()) // 1
println(counter()) // 2
まとめ
- ラムダ式は 無名関数 を簡潔に書ける構文
- 基本構文:
{ 引数 -> 本体 } - 引数1つなら
itが使える - コレクション操作(
map,filter,forEach)と相性抜群 - 外部変数をキャプチャできる(クロージャ)