Voglio trovare una chiave specifica in una data mappa. Se viene trovata la chiave, voglio quindi ottenere il valore di quella chiave dalla mappa.groovy: trova una chiave in una mappa e restituisce il suo valore
Questo è quello che sono riuscito finora:
def mymap = [name:"Gromit", likes:"cheese", id:1234]
def x = mymap.find{ it.key == "likes" }
if(x)
println x.value
Questo funziona, l'uscita è "cheese" come previsto. Grande, ma non voglio fare x.value
alla fine, e non voglio fare if(x)
. Voglio che x contenga direttamente il valore in qualche modo.
non posso ottenere il valore direttamente nella x come questo:
def mymap = [name:"Gromit", likes:"cheese", id:1234]
def x = mymap.find{ it.key == "likesZZZ" }.value
println x
A causa della chiusura ritrovamento è nullo in questo caso, questo si traduce in un Exception Null Pointer. Ovviamente, lo snippet di codice sopra riportato funziona quando it.key == "likes"
, ma non sono sicuro di trovare sempre la chiave di destinazione nella mappa.
Che è una via "groovier" sicuro di fare questo su una mappa:
- Controllare se una mappa ha una data chiave,
- E se è così, ottenere il valore di questa chiave
Fantastico. Questo è ancora più groovy della risposta originale che ho selezionato e si adatta meglio a ciò che stavo cercando. Marcare questa è la risposta. Grazie. – noumenon
L'uso di una chiusura è molto costoso. Meglio usare 'def x = mymap.get (" likes ") ?. value 'lì, molto più efficiente –