Существует ли синтаксический сахар для привязки значения внутри анонимной функции в Scala?

StackOverflow https://stackoverflow.com/questions/298167

Вопрос

Вместо того, чтобы писать

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

Хорошо, вот один вкладыш С привязкой:

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

Ваше здоровье

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top