0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Kotlin 】ラムダ式 (Lambda Expression)

Posted at

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)と相性抜群
  • 外部変数をキャプチャできる(クロージャ)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?