在Groovy這樣的動態語言中,閉包是其中的一個重要武器。而這些語言的開發者自然不會 放棄使用這些武器,我們可以看到在Groovy語言的集合類中,廣泛的使用了閉包。其中, each方法就是這樣一個使用閉包的方法。
我們知道,在Java中,我們使用下面的語句對集合類對象進行遍歷:
for(int i=0;i<list.size();i++)
{
System.out.println(list.get(i))
}
而在Groovy語言中,我們使用each方法對集合類對象進行遍歷:
list.each{
it ->
println it
}
已經比起傳統的for循環語句來說簡單得多,但仍然可以更簡單:
list.each{
println it
}
這是因為在默認情況下,each方法的輸入參數為it。
如果我們想通過each方法獲取集合類對象中的元素位置時,應該這樣使用:
list.eachWithIndex{
i,it ->
println"port: $i value: $it"
}
下面,我們定義一個List對象:
def list = [1,5,6,2,6,7]
現在,我想要判斷上面的集合對象中是否大於5的元素:
def have = false
list.each{
if(it>5)
{
have = true
break;
}
}
println have
結果卻發現該break語言編譯不過去。怎麼辦?
def have = false
for(it in list){
if(it>5)
{
have = true
break;
}
}
println have
不錯,有時侯這些舊的語法還有是用途的。