高階関数、クロージャ
高階関数
- 関数を引数として受け取る関数または関数を返す関数のことを高階関数と呼ぶ。
文字列の引数 str を受け取って、「Int型整数を引数で受け取り文字列を返す関数」を返す。
scala> def foo(str: String) = (v: Int) => str + v foo: (str: String)(Int) => java.lang.String scala> val bar = foo("this year ") bar: (Int) => java.lang.String = <function1> scala> bar(2012) res1: java.lang.String = this year 2012 scala> val bar2 = foo("next year ") bar2: (Int) => java.lang.String = <function1> scala> bar2(2013) res2: java.lang.String = next year 2013