Gibt es syntaktischen Zucker Wert innerhalb einer anonymen Funktion in Scala für die Bindung?
-
08-07-2019 - |
Frage
Statt des Schreibens
((x: Double) => (((y: Double) => y*y))(x+x))(3)
würde Ich mag, wie etwas schreiben
((x: Double) => let y=x+x in y*y)(3)
Gibt es etwas wie diese Art von syntaktischem Zucker in Scala?
Lösung
Tatsächlich gibt es: es ist „val
“ genannt. : -)
({ x: Double =>
val y = x + x
y * y
})(3)
Die Streben natürlich sind hier optional, ziehe ich sie nur Klammern, wenn Funktionen definieren (schließlich ist dies nicht Lisp). Das val
Schlüsselwort definiert eine neue Bindung innerhalb des aktuellen lexikalischen Gültigkeitsbereich. Scala nicht Einheimischer zwingen, ihren eigenen Bereich zu definieren, im Gegensatz zu Sprachen wie Lisp und ML.
Eigentlich var
funktioniert auch in jedem Bereich, aber es ist schlechter Stil, es zu benutzen.
Andere Tipps
OK, hier ist der Einzeiler mit der Bindung:
({ x:Double => val y = x + x; y * y })(3)
Prost
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow