groovy
Spread Operator
Suche…
Bemerkungen
In den meisten Fällen ist der Spread-Operator *.
ist identisch mit dem Aufruf von .collect { it.________ }
.
def animals = ['cat', 'dog', 'fish']
assert animals*.length() == animals.collect { it.length() }
Wenn das Thema jedoch null ist, verhalten sie sich anders:
def animals = null
assert animals*.length() == null
assert animals.collect { it.length() } == []
Methode aufrufen
assert ['cat', 'dog', 'fish']*.length() == [3, 3, 4]
Beachten Sie, dass beim Mischen von Typen in der Auflistung, wenn die Methode für einige Elemente nicht vorhanden ist, eine groovy.lang.MissingMethodException
ausgelöst werden kann:
['cat', 'dog', 'fish',3]*.length()
// it throws groovy.lang.MissingMethodException: No signature of method: java.lang.Integer.length()
Zugriff auf eine Eigenschaft
class Vector {
double x
double y
}
def points = [
new Vector(x: 10, y: -5),
new Vector(x: -17.5, y: 3),
new Vector(x: -3.3, y: -1)
]
assert points*.x == [10, -17.5, -3.3]
Hinweis: Das *
ist optional. Wir könnten auch die obige Aussage wie in der unteren Zeile schreiben und der Groovy-Compiler würde sich trotzdem darüber freuen.
assert points.x == [10, -17.5, -3.3]
Es ist null-sicher
Wenn es eine ist null
Objekt auf der Sammlung es keine wirft NPE
, gibt es eine null
statt:
assert ['cat', 'dog', 'fish', null]*.length() == [3, 3, 4, null]
Wenn Sie es direkt in einem null
ist es auch nullsicher:
def nullCollection = null
assert nullCollection*.length() == null
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow