Существует ли синтаксический сахар для привязки значения внутри анонимной функции в Scala?
-
08-07-2019 - |
Вопрос
Вместо того, чтобы писать
((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)
Ваше здоровье
Не связан с StackOverflow