Como faço para descobrir se uma matriz contém um elemento? Eu pensei que poderia haver algo como o [1, 2, 3].includes(1)
que avaliaria como true
.
assert [12,42,33].indexOf(42) == 1
Como faço para descobrir se uma matriz contém um elemento? Eu pensei que poderia haver algo como o [1, 2, 3].includes(1)
que avaliaria como true
.
assert [12,42,33].indexOf(42) == 1
Respostas:
.contains () é o melhor método para listas, mas para mapas, você precisará usar .containsKey () ou .containsValue ()
[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
if(aMap["aKey"]==aValue)
.
Algum açúcar de sintaxe
1 in [1,2,3]
def m = [a: true]; 'a' in m
→ verdadeiro ainda def m = [a: false]; 'a' in m
→ falso!
Para listas, use contains
:
[1,2,3].contains(1) == true
true == true
, é claro #joke
Se você realmente deseja o seu método de inclusão em um ArrayList, basta adicioná-lo:
ArrayList.metaClass.includes = { i -> i in delegate }
IMPORTANTE Gotcha para usar .contains () em uma coleção de objetos, como domínios. Se a declaração Domain contiver uma EqualsAndHashCode, ou alguma outra implementação equals () para determinar se esses objetivos são iguais e você a definiu assim ...
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")
o .contains (myObjectToCompareTo) avaliará os dados em myObjectToCompareTo com os dados de cada instância do objeto na coleção. Portanto, se o seu método equals não for adequado, como o meu não foi, você poderá ver resultados inesperados.
Você pode usar o operador Membership:
def list = ['Grace','Rob','Emmy']
assert ('Emmy' in list)