ラムダ式

Kotlinの**ラムダ式(lambda expression)**は、**名前のない関数(無名関数)**の一種で、関数型プログラミングを簡潔に書くための構文です。関数を変数として扱ったり、関数に引数として渡したりするために使われます。


基本構文

kotlin
val lambdaName: (引数の型) -> 戻り値の型 = { 引数名 -> 処理 }

例1:単純な加算ラムダ

kotlin
val sum: (Int, Int) -> Int = { a, b -> a + b } println(sum(3, 5)) // 出力: 8

ラムダ式の特徴

1. 型推論が可能

Kotlinでは、文脈から型を推論できる場合、型の明示は省略できます。

kotlin
val multiply = { x: Int, y: Int -> x * y }

また、関数の引数として渡すときは、型を省略できることが多いです。


2. 最後の引数がラムダ式の場合、外に出せる(ラムダ式の外出し)

kotlin
fun performOperation(x: Int, y: Int, op: (Int, Int) -> Int): Int { return op(x, y) } // ラムダを関数呼び出しの外に出す val result = performOperation(4, 5) { a, b -> a * b } println(result) // 出力: 20

3. itによる省略記法

引数が1つだけの場合、名前を省略して it でアクセスできます。

kotlin
val square: (Int) -> Int = { it * it } println(square(6)) // 出力: 36

4. 高階関数との連携

ラムダ式は**高階関数(関数を引数または戻り値に取る関数)**でよく使用されます。

例:list.filter の使用

kotlin
val numbers = listOf(1, 2, 3, 4, 5) val even = numbers.filter { it % 2 == 0 } println(even) // 出力: [2, 4]

5. ラムダと匿名関数の違い

ラムダ式と匿名関数(funを使った無名関数)は似ていますが、以下のような違いがあります。

比較点 ラムダ式 匿名関数
構文 { 引数 -> 処理 } fun(引数): 戻り値型 { 処理 }
returnの動作 外側の関数からも脱出できる(非ローカル) 自分自身のスコープでのみreturn(ローカル)

まとめ

特徴 説明
簡潔さ 名前のない関数を短く記述可能
柔軟性 関数の引数や戻り値として自由に使える
組み込み関数との親和性 map, filter, forEach などと組み合わせると強力
高階関数との相性 引数としてラムダを渡して処理をカスタマイズ可能

生成日:2025/05/04