無名関数、関数リテラルの定義
Scalaの無名関数、関数リテラルは以下のように記述することで定義できる。
val f = (x:Int, y:Int) => x == y
これは引数2つの関数リテラルとなるので、Function2(2は引数2つの意味)のtrait実装の無名クラスの糖衣構文となる。
つまり、こういこと。
val f = new Function2[Int, Int, Boolean] { def apply(a: Int, b: Int) = a == b }
関数合成
引数1つ、つまりFunction1
traitは合成関数compose
とandThen
メソッドを持つ。
compose
は後ろの関数を実行した後に前の関数を適用する。
val f = (x:Int) => x + 1 val y = (y:Int) => y * 10 val c = f compose y c(2) // f( y( 2 ) ) res27: Int = 21
andThen
はその逆。前の関数を実行した後に後ろの関数を適用する。
val d = f andThen y d(2) // y( f( 2 ) ) res29: Int = 30
リンク
リンク