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

Анонимные функции в 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