Як визначити, чи містить масив елемент? Я думав, що може статися щось на зразок того, [1, 2, 3].includes(1)
що можна оцінити як true
.
assert [12,42,33].indexOf(42) == 1
Як визначити, чи містить масив елемент? Я думав, що може статися щось на зразок того, [1, 2, 3].includes(1)
що можна оцінити як true
.
assert [12,42,33].indexOf(42) == 1
Відповіді:
.contains () - найкращий метод для списків, але для карт вам потрібно буде використовувати .containsKey () або .containsValue ()
[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
if(aMap["aKey"]==aValue)
.
Деякі синтаксичні цукру
1 in [1,2,3]
def m = [a: true]; 'a' in m
→ справді ще def m = [a: false]; 'a' in m
→ помилково!
Для списків використовуйте contains
:
[1,2,3].contains(1) == true
true == true
, звичайно, #joke
Якщо ви дійсно хочете, щоб ваш метод включає в ArrayList, просто додайте його:
ArrayList.metaClass.includes = { i -> i in delegate }
ВАЖЛИВО Є можливість використовувати .contains () для колекції об'єктів, таких як Домени. Якщо декларація домену містить програму EqualsAndHashCode або якусь іншу рівну () реалізацію, щоб визначити, чи рівні ці Ojbects, і ви встановили це так ...
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")
тоді .contains (myObjectToCompareTo) оцінить дані в myObjectToCompareTo з даними для кожного екземпляра Object у колекції. Отже, якщо ваш метод рівних не піддається нюху, як і у мене, ви можете побачити несподівані результати.
Ви можете скористатися оператором Membership:
def list = ['Grace','Rob','Emmy']
assert ('Emmy' in list)