Chcę znaleźć konkretny klucz na danej mapie. Jeśli klucz zostanie znaleziony, wtedy chcę uzyskać wartość tego klucza z mapy.groovy: znajdź klucz na mapie i zwróć jego wartość
To co udało mi się do tej pory:
def mymap = [name:"Gromit", likes:"cheese", id:1234]
def x = mymap.find{ it.key == "likes" }
if(x)
println x.value
To działa, wyjście jest „ser”, jak oczekiwano. Świetnie, ale nie chcę na końcu robić x.value
i nie chcę robić if(x)
. Chcę, aby x w sposób bezpośredni zawierał wartość.
nie mogę uzyskać wartość bezpośrednio w X tak:
def mymap = [name:"Gromit", likes:"cheese", id:1234]
def x = mymap.find{ it.key == "likesZZZ" }.value
println x
Ponieważ zamknięcie znalezisko ma wartość null w tym przypadku, to powoduje wyjątek pustego wskaźnika. Oczywiście powyższy fragment kodu działa, gdy it.key == "likes"
, ale nie jestem pewien, czy zawsze znajdę klucz docelowy na mapie.
Co to jest „Groovier” i bezpieczny sposób to zrobić na mapie:
- Sprawdź, czy mapa ma dany klucz,
- a jeśli tak, uzyskać wartość tego klucza
Awesome. Jest to nawet bardziej zacięte niż oryginalna odpowiedź, którą wybrałem i lepiej pasuje do tego, czego szukałem. Oznaczenie to jest odpowiedź. Dzięki. – noumenon
Korzystanie z zamknięcia jest bardzo drogie. Lepiej użyj 'def x = mymap.get (" lubi ")" wartość "tam, o wiele bardziej wydajną –