Làm thế nào để tôi tìm ra nếu một mảng có chứa một phần tử? Tôi nghĩ rằng có thể có một cái gì [1, 2, 3].includes(1)
đó sẽ đánh giá như true
.
assert [12,42,33].indexOf(42) == 1
Làm thế nào để tôi tìm ra nếu một mảng có chứa một phần tử? Tôi nghĩ rằng có thể có một cái gì [1, 2, 3].includes(1)
đó sẽ đánh giá như true
.
assert [12,42,33].indexOf(42) == 1
Câu trả lời:
.contains () là phương thức tốt nhất cho danh sách, nhưng đối với bản đồ, bạn sẽ cần sử dụng .containsKey () hoặc .containsValue ()
[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
if(aMap["aKey"]==aValue)
.
Một số cú pháp đường
1 in [1,2,3]
def m = [a: true]; 'a' in m
→ đúng chưa def m = [a: false]; 'a' in m
→ sai!
Đối với danh sách, sử dụng contains
:
[1,2,3].contains(1) == true
true == true
, tất nhiên #joke
Nếu bạn thực sự muốn phương thức bao gồm của bạn trên một ArrayList, chỉ cần thêm nó:
ArrayList.metaClass.includes = { i -> i in delegate }
Gotcha quan trọng để sử dụng .contains () trên Bộ sưu tập các đối tượng, chẳng hạn như tên miền. Nếu khai báo Miền chứa một EqualsAndHashCode hoặc một số triển khai Equals () khác để xác định xem các Ojbects đó có bằng nhau không, và bạn đã đặt nó như thế này ...
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")
sau đó .contains (myObjectToCompareTo) sẽ đánh giá dữ liệu trong myObjectToCompareTo với dữ liệu cho từng đối tượng Object trong Bộ sưu tập. Vì vậy, nếu phương thức bằng của bạn không phải là để hít, như của tôi thì không, bạn có thể thấy kết quả không mong muốn.
Bạn có thể sử dụng toán tử thành viên:
def list = ['Grace','Rob','Emmy']
assert ('Emmy' in list)