¿Existe azúcar sintáctico para unir un valor dentro de una función anónima en Scala?
-
08-07-2019 - |
Pregunta
En lugar de escribir
((x: Double) => (((y: Double) => y*y))(x+x))(3)
Me gustaría escribir algo como
((x: Double) => let y=x+x in y*y)(3)
¿Hay algo como este tipo de azúcar sintáctica en Scala?
Solución
De hecho hay: se llama " val
" ;. :-)
({ x: Double =>
val y = x + x
y * y
})(3)
Las llaves son, por supuesto, opcionales aquí, solo las prefiero a paréntesis al definir funciones (después de todo, esto no es Lisp). La palabra clave val
define un nuevo enlace dentro del alcance léxico actual. Scala no obliga a los locales a definir su propio alcance, a diferencia de lenguajes como Lisp y ML.
En realidad, var
también funciona dentro de cualquier ámbito, pero se considera un mal estilo usarlo.
Otros consejos
OK, aquí está el revestimiento con el enlace:
({ x:Double => val y = x + x; y * y })(3)
Saludos
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow