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?

War es hilfreich?

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