Trong Groovy, sự khác biệt giữa là gì,Sự khác nhau giữa 1..5, [* 1..5] và [1..5] trong Groovy là gì?
def a=1..5
def b= [*1..5]
def c=[1..5]
gì *
trong [*1..5]
tượng trưng?
Trong Groovy, sự khác biệt giữa là gì,Sự khác nhau giữa 1..5, [* 1..5] và [1..5] trong Groovy là gì?
def a=1..5
def b= [*1..5]
def c=[1..5]
gì *
trong [*1..5]
tượng trưng?
*
đại diện cho Spread Operator. Xây dựng ví dụ của bạn:
a = 1..5
b = [*1..5]
c = [1..5]
assert a.class.name == "groovy.lang.IntRange" //Is a range from 1 till 5
assert b.class.name == "java.util.ArrayList" //Spread the range in a list
assert c.class.name == "java.util.ArrayList" //Is a list
Mở rộng @ giải thích ataylor của:
assert a.size() == 5
assert b.size() == 5
assert c.size() == 1
Để đạt được từng yếu tố trong c
bạn phải lặp trên nó (đó là một loạt)
c.each{println it}
Groovy Goodness bởi Ông Haki có một ví dụ chi tiết về cách sử dụng của nó.
đây *
(nhà điều hành lây lan) mở rộng phạm vi 1..5
và do đó bạn sẽ có được một danh sách các số nguyên trong phạm vi đó [1, 2, 3, 4, 5]
Khi bạn đặt một đối tượng phạm vi trong một danh sách, bạn sẽ có được một danh sách với một yếu tố của loại IntRange
:
assert [1..5].size() == 1
bằng cách áp dụng các nhà điều hành lây lan nó mở rộng phạm vi và bạn sẽ có được một danh sách với năm yếu tố, các số nguyên thực tế phạm vi đại diện:
assert [*1..5].size() == 5
Bạn nhận được ý chính. Cảm ơn!! :) – dmahapatro
Rõ ràng và chính xác! Cảm ơn – Chinmay
Giờ đây bạn có thể chấp nhận câu trả lời thích hợp không? – dmahapatro