In Groovy vorbei, wenn ich:Standard groovy Methode Parameterwert anwenden, wenn null
def say(msg = 'Hello', name = 'world') {
"$msg $name!"
}
Und dann rufen:
say() // Hello world!
say("hi") // Hi world!
say(null) // null world!
Warum ist das letzte wahrsten Sinne des Wortes als null
und nicht die Anwendung interpretiert zu werden der Standardwert? Schadet das nicht dem Zweck der Standardmethodenargumentwerte? Ich bekomme, dass die Weitergabe null
ist anders als keine Übergabe w/r/t Argument Länge.
Mein Problem hier ist, dass wenn ich jetzt eine Methode, die eine Sammlung als Argument:
def items(Set<String> items = []) {
new HashSet<>(items)
}
Diese ein NullPointerException
werfen, wenn ich items(null)
nennen, aber gut funktionieren, wenn ich items()
nur sagen. Damit dies richtig funktioniert, muss ich die Zeile ändern, um zu sein, was wiederum den gesamten Zweck der Standardmethodenargumentwerte zu besiegen scheint.
Was fehlt mir hier?
Das macht absolut Sinn. Danke und Danke für den Link zum anderen Beitrag. Also ist die richtige Antwort, dann den Elvis-Operator zu benutzen? – icfantv
Ja. Ich denke elvis ist eine gute Lösung. – Will
@icfantv und wenn Sie die Duplizierung nicht mögen, dann verwenden Sie null als Standardparameter und elvis + den Wert, den Sie haben möchten – cfrick