Bir dizinin eleman içerip içermediğini nasıl anlarım? [1, 2, 3].includes(1)
Olarak değerlendirilebilecek bir şey olabileceğini düşündüm true
.
assert [12,42,33].indexOf(42) == 1
Bir dizinin eleman içerip içermediğini nasıl anlarım? [1, 2, 3].includes(1)
Olarak değerlendirilebilecek bir şey olabileceğini düşündüm true
.
assert [12,42,33].indexOf(42) == 1
Yanıtlar:
.contains (), listeler için en iyi yöntemdir, ancak haritalar için .containsKey () veya .containsValue () kullanmanız gerekecektir.
[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
if(aMap["aKey"]==aValue)
.
Biraz sözdizimi şekeri
1 in [1,2,3]
def m = [a: true]; 'a' in m
→ henüz doğru def m = [a: false]; 'a' in m
→ yanlış!
Listeler için şunu kullanın contains
:
[1,2,3].contains(1) == true
true == true
, tabii ki # şaka
İçerme yönteminizi bir ArrayList'de gerçekten istiyorsanız, eklemeniz yeterlidir:
ArrayList.metaClass.includes = { i -> i in delegate }
ÖNEMLİ Etki Alanları gibi Nesnelerin Koleksiyonunda .contains () kullanmak için Gotcha. Domain bildirimi bir EqualsAndHashCode veya bu Ojbect'lerin eşit olup olmadığını belirlemek için başka bir equals () uygulaması içeriyorsa ve bunu şu şekilde ayarladıysanız ...
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")
daha sonra .contains (myObjectToCompareTo), myObjectToCompareTo'daki verileri Koleksiyondaki her Object örneğinin verileriyle değerlendirir. Öyleyse, eğer sizin eşittir yönteminiz benimkine uygun değilse, beklenmedik sonuçlar görebilirsiniz.
Üyelik operatörünü kullanabilirsiniz:
def list = ['Grace','Rob','Emmy']
assert ('Emmy' in list)