2012-09-15 17 views
40

Tôi nghĩ rằng tôi đã có một số kỳ vọng hài hước ... Tôi muốn lặp lại các số từ 1 đến 10. Như một vòng lặp trong khi nó đi như thế này:gọi .each {} trên IntRange trả về phạm vi không phải mỗi số nguyên

def countMe = 1 
while (countMe<11) { 
    println countMe 
    countMe++ 
} 

tôi đã mong rằng những điều sau đây sẽ làm điều này cũng:

[1..10].each { println it } 

Nhưng nó thực sự in các IntRange, không phải mỗi Integer trong phạm vi. Cách gần nhất (cú pháp) cho hình ảnh [x..y].each{} của tôi là gì để có được một danh sách các số?

Trả lời

79

Use parentheses not brackets:

(1..10).each{println it} 

[1..10] là một danh sách có độ dài 1 chứa một loạt duy nhất.

+3

Bạn cần phải nhớ [1..10] chỉ có nghĩa là phạm vi khi đó là một chỉ số SAU một biến khác. Khi nó đứng một mình, thì đó là DANH SÁCH của một phạm vi. Những mâu thuẫn nhỏ này phát sinh do Groovy cố gắng mở rộng cú pháp của Java với các bổ sung riêng của nó. –

Các vấn đề liên quan