Ich habe die folgende Methode definieren:scala: Standardparameter in einer Funktion (val) vs mit einer Methode (def)
scala> def method_with_default(x: String = "default") = {x + "!"}
method_with_default: (x: String)java.lang.String
scala> method_with_default()
res5: java.lang.String = default!
scala> method_with_default("value")
res6: java.lang.String = value!
Ich versuche, das gleiche mit einem val zu erreichen, aber ich bekomme eine Syntaxfehler, wie folgt aus:
(ohne Standardwert, dieser kompiliert ok)
scala> val function_with_default = (x: String) => {x + "!"}
function_with_default: String => java.lang.String = <function1>
(aber ich konnte nicht dieses zu kompilieren ...)
scala> val function_with_default = (x: String = "default") => {x + "!"}
<console>:1: error: ')' expected but '=' found.
val function_with_default = (x: String = "default") => {x + "!"}
^
eine Idee?
Function1 mit Function0 sehr clever ist, aber ich würde sagen, es ist ein bisschen stinkend. Nur meine Meinung hier. Keine Diskussion beabsichtigt. :) – pedrofurla
BTW Sie können den Zucker für Funktionen verwenden: 'new (String => String) mit (() => String) {override def apply = apply (" default "); überschreiben def anwenden (x: String) = x + "!" } 'funktioniert. – pedrofurla
Ich stimme zu, es ist ein bisschen stinkend, aber ich sehe keine Lösung, die nicht ist. –