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?

¿Fue útil?

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
scroll top