Есть ли синтаксический сахар для привязки значения внутри анонимной функции в Scala? - PullRequest
6 голосов
/ 18 ноября 2008

Вместо записи

((x: Double) => (((y: Double) => y*y))(x+x))(3)

Я хотел бы написать что-то вроде

((x: Double) => let y=x+x in y*y)(3)

Есть ли что-нибудь подобное синтаксическому сахару в Scala?

Ответы [ 2 ]

14 голосов
/ 18 ноября 2008

Действительно есть: это называется "val". : -)

({ x: Double =>
  val y = x + x
  y * y
})(3)

Здесь фигурные скобки, конечно, необязательны, я просто предпочитаю их скобкам при определении функций (в конце концов, это не Лисп). Ключевое слово val определяет новую привязку в текущей лексической области. Scala не заставляет местных жителей определять собственную область видимости, в отличие от таких языков, как Lisp и ML.

На самом деле, var также работает в любой области видимости, но использовать его считается плохим стилем.

6 голосов
/ 19 ноября 2008

ОК, вот один вкладыш с привязкой:

 ({ x:Double => val y = x + x; y * y })(3)

Приветствия

...