Scala 匿名関数
Scala で匿名関数を定義する構文は非常に簡単で、矢印の左側はパラメータリスト、右側は関数本体です。
匿名関数を使用すると、コードがより簡潔になります。
次の式は、Int 型の入力パラメータを 1 つ受け取る匿名関数を定義しています:
var inc = (x:Int) => x+1
上記で定義した匿名関数は、実際には次の書き方の省略形です:
def add2 = new Function1[Int,Int]{
def apply(x:Int):Int = x+1;
}
上記の例の inc は関数として使用でき、使い方は次のとおりです:
var x = inc(7)-1
同様に、匿名関数で複数のパラメータを定義できます:
var mul = (x: Int, y: Int) => x*y
mul は関数として使用でき、使い方は次のとおりです:
println(mul(3, 4))
匿名関数にパラメータを設定しないこともできます。次のようになります:
var userDir = () => { System.getProperty("user.dir") }
userDir は関数として使用でき、使い方は次のとおりです:
println( userDir() )
例
例
object Demo {
def main(args: Array[String]) {
println( "multiplier(1) value = " + multiplier(1) )
println( "multiplier(2) value = " + multiplier(2) )
}
var factor = 3
val multiplier = (i:Int) => i * factor
}
def main(args: Array[String]) {
println( "multiplier(1) value = " + multiplier(1) )
println( "multiplier(2) value = " + multiplier(2) )
}
var factor = 3
val multiplier = (i:Int) => i * factor
}
上記のコードを Demo.scala ファイルに保存し、次のコマンドを実行します:
$ scalac Demo.scala $ scala Demo
出力結果は次のとおりです:
multiplier(1) value = 3 multiplier(2) value = 6その他の拡張