English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Scala 匿名函数

Função Scala

Scala 中定义匿名函数的语法很简单,箭头左边是参数列表,右边是函数体。

使用匿名函数后,我们的代码变得更简洁了。

下面的表达式就定义了一个接受一个Int类型输入参数的匿名函数:

var inc = (x:Int) => x+1

上述定义的匿名函数,其实是下面这种写法的简写:

def add2 = new Function1[Int,Int]{  
    def apply(x:Int):Int = x+1;  
} 

O exemplo inc acima agora pode ser usado como uma função, da seguinte forma:

var x = inc(7)-1

Da mesma forma, podemos definir múltiplos parâmetros na função anônima:

var mul = (x: Int, y: Int) => x*y

mul agora pode ser usado como uma função, da seguinte forma:

println(mul(3, 4))

Também podemos não passar parâmetros para a função anônima, conforme mostrado a seguir:

var userDir = () => { System.getProperty("user.dir") }

userDir agora pode ser usado como uma função, da seguinte forma:

println( userDir() )

Exemplo Online

objeto Demo {
   def main(args: Array[String]) {
      println( "multiplicador(1) valor = " +  multiplicador(1) )
      println( "multiplicador(2) valor = " +  multiplicador(2) )
   }
   var fator = 3
   val multiplicador = (i:Int) => i * fator
}

Mantenha o código acima no arquivo Demo.scala e execute os seguintes comandos:

$ scalac Demo.scala
$ scala Demo

O resultado da saída é:

multiplicador(1) valor = 3
multiplicador(2) valor = 6

Função Scala