Scala 匿名函數

Scala 函數 Scala 函數

Scala 中定義匿名函數的語法很簡單,箭頭左邊是參數列表,右邊是函數體。

使用匿名函數後,我們的代碼變得更簡潔了。

下麵的運算式就定義了一個接受一個Int類型輸入參數的匿名函數:

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 函數 Scala 函數