2012-03-01 43 views
30

Với tất cả các cách viết tắt của việc làm trong Groovy, có một cách dễ dàng hơn để lặp lại một danh sách trong khi có quyền truy cập vào một chỉ mục lặp.Groovy, cách lặp lại danh sách với chỉ mục

for(i in 0 .. list.size()-1) { 
    println list.get(i) 
} 

Không có chỉ mục tiềm ẩn trong vòng lặp cơ bản for?

for(item in list){ 
    println item  
    println index 
} 

Trả lời

81

Bạn có thể sử dụng eachWithIndex:

list.eachWithIndex { item, index -> 
    println item 
    println index 
} 

Với Groovy 2.4 và mới hơn, bạn cũng có thể sử dụng phương pháp indexed(). Điều này có thể có ích để truy cập các chỉ số với các phương pháp như collect:

def result = list.indexed().collect { index, item -> 
    "$index: $item" 
} 
println result 
+0

câu trả lời tuyệt vời, nơi tôi có thể tìm hiểu về việc đóng cửa như 'eachWithIndex' và các loại đối số mà họ thực hiện? – raffian

+1

Tôi bắt đầu ở đây: http://groovy.codehaus.org/GDK+Extensions+to+Object và http://groovy.codehaus.org/JN1015-Collections – ataylor

+5

Cũng http://groovy.codehaus.org/ groovy-jdk/là một tham chiếu tuyệt vời. – doelleri

1

Hãy thử điều này nếu bạn muốn bắt đầu index 1.

[ 'rohit', 'ravi', 'roshan' ].eachWithIndex { name, index, indexPlusOne = index + 1 -> 
    println "Name $name has position $indexPlusOne" 
} 
Các vấn đề liên quan