無名関数

Scalaにおける**無名関数(anonymous function)**とは、名前を持たない関数のことを指します。これは、一時的に使用したい処理を簡潔に記述する際に用いられ、関数型プログラミングのスタイルで非常に頻繁に登場します。


1. 基本構文

Scalaでは、無名関数を次のような構文で記述します。

scala
(引数) => 処理

scala
val add = (x: Int, y: Int) => x + y println(add(3, 5)) // 出力: 8

この例では (x: Int, y: Int) => x + y が無名関数です。関数に名前 add を付けて変数に代入していますが、関数自体は名前を持ちません。


2. 無名関数の使用例

高階関数と組み合わせる例(map関数)

scala
val nums = List(1, 2, 3, 4) val squared = nums.map(x => x * x) println(squared) // 出力: List(1, 4, 9, 16)

この例では、x => x * x という無名関数が map に渡され、各要素を2乗しています。


3. 型推論の活用

Scalaの型推論により、引数の型を省略することができます。

scala
val doubled = List(1, 2, 3).map(x => x * 2)

また、引数が1つだけの場合は「_」を使ってさらに簡潔に書くことも可能です。

scala
val doubled = List(1, 2, 3).map(_ * 2)

この (_ * 2)(x => x * 2) と同じ意味です。


4. 無名関数の利点と用途

  • 一時的な処理を簡潔に記述できる

  • コードの可読性表現力の向上

  • 関数を引数として渡す場面(高階関数)で活用される


5. 無名関数と関数値の違い

無名関数を変数に代入すると「関数値(function value)」として扱われます。これはオブジェクトとして扱える関数であり、Scalaでは関数型プログラミングに不可欠な要素です。


まとめ

項目 説明
定義方法 (引数) => 処理
主な用途 一時的な関数、引数として渡す関数
特徴 名前を持たない、型推論や _ を使って簡潔に書ける
使用例 map, filter, foreach などの高階関数で頻出

生成日:2025/05/04