C'è zucchero sintattico per legare un valore all'interno di una funzione anonima in Scala?
-
08-07-2019 - |
Domanda
Invece di scrivere
((x: Double) => (((y: Double) => y*y))(x+x))(3)
Vorrei scrivere qualcosa del genere
((x: Double) => let y=x+x in y*y)(3)
C'è qualcosa di simile a questo tipo di zucchero sintattico in Scala?
Soluzione
In effetti c'è: si chiama " val
" ;. : -)
({ x: Double =>
val y = x + x
y * y
})(3)
Le parentesi graffe sono ovviamente opzionali qui, le preferisco solo tra parentesi quando definisco le funzioni (dopo tutto, questo non è Lisp). La parola chiave val
definisce una nuova associazione all'interno dell'ambito lessicale corrente. Scala non obbliga i locali a definire il proprio ambito, a differenza di linguaggi come Lisp e ML.
In realtà, var
funziona anche in qualsiasi ambito, ma è considerato un cattivo stile usarlo.
Altri suggerimenti
OK, ecco la copertina CON la rilegatura:
({ x:Double => val y = x + x; y * y })(3)
Saluti
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow