Durante la lettura di un codice Groovy di un altro sviluppatore che ho incontrato la seguente definizione:Cosa significa [:] in groovy?
def foo=[:]
Che cosa significa?
Durante la lettura di un codice Groovy di un altro sviluppatore che ho incontrato la seguente definizione:Cosa significa [:] in groovy?
def foo=[:]
Che cosa significa?
[:]
è una notazione abbreviata per la creazione di una mappa.
è inoltre possibile aggiungere chiavi e valori ad esso:
def foo = [bar: 'baz']
Citando the doc:
noti che
[:]
è la mappa espressione vuota.
... che è l'unico Map
con size()
ritorno 0.) Di per sé, è raramente utile, ma è possibile aggiungere i valori in questa mappa, ovviamente:
def emptyMap = [:]
assert emptyMap.size() == 0
emptyMap.foo = 5
assert emptyMap.size() == 1
assert emptyMap.foo == 5
Tecnicamente, "è l'unica' Mappa' con 'size()' la restituzione di 0 "non è vera. Ci sono molte possibili istanze di mappe con dimensione 0, e sicuramente non tutte hanno uguaglianza di riferimento. Saranno tutti "uguali", anche se (supponendo che non vengano mutati), che probabilmente è ciò che intendevi. –
[:]
crea un vuoto Carta geografica. Il colon è lì per distinguerlo da []
, che crea una lista vuota.
Questo codice Groovy:
def foo = [:]
è più o meno equivalente a questo codice java:
Object foo = new java.util.LinkedHashMap();
immagino più voci sono separate da una virgola? '[bar: 'baz', qux: 'quux']' –
@martinjakubik si è corretto – doelleri