Scala 匿名関数

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
}

上記のコードを Demo.scala ファイルに保存し、次のコマンドを実行します:

$ scalac Demo.scala
$ scala Demo

出力結果は次のとおりです:

multiplier(1) value = 3
multiplier(2) value = 6

Scala 関数

その他の拡張