2008-11-18 5 views

Antwort

14

Tatsächlich gibt es: es heißt "val". :-)

({ x: Double => 
    val y = x + x 
    y * y 
})(3) 

Die Streben hier natürlich optional sind, ziehe ich es nur um sie bei der Definition von Funktionen zu Klammern (schließlich ist dies nicht Lisp). Das Schlüsselwort val definiert eine neue Bindung innerhalb des aktuellen lexikalischen Bereichs. Im Gegensatz zu Sprachen wie Lisp und ML zwingt Scala Ortsansässige nicht dazu, ihren eigenen Geltungsbereich zu definieren.

Eigentlich funktioniert var auch in jedem Bereich, aber es gilt als schlechter Stil, es zu verwenden.

+0

Thanks :) Ich dachte, ich hätte versucht, aber ich muß die Syntax falsch verstanden habe. Gibt es eine Möglichkeit, alles in einer Linie zu haben? – namin

+0

@ Germán hat die einzeilige Version. –

6

OK, hier ist der Einzeiler mit der Bindung:

({ x:Double => val y = x + x; y * y })(3) 

Beifall

Verwandte Themen