簡體   English   中英

Groovy each()方法未正確迭代

[英]Groovy each() method does not iterate properly

嘗試以下代碼時,我遇到了each()方法的奇怪行為:

def xml = new XmlSlurper().parseText('''
<list>
    <item a="1">a</item>
    <item a="2">b</item>
    <item a="1">c</item>
</list>
''')

def i = 0
xml.'**'.findAll { it.@a=='1' }.each {
    println "hi" + i
}  

結果只是hi0 ,但是我希望hi0hi1 這是錯誤還是每種語言設計? 僅當我寫println "hi" + i++而不是當前的閉包主體時,才提供第二個結果,所以當每個項目的內容都不同時...

您的i變量未遞增,因為沒有任何內容告訴它遞增。 當前編寫代碼的方式,我希望輸出為:

hi0
hi0

我認為您正在尋找的是eachWithIndex ,它為閉包提供了兩個參數-當前項目和該項目的索引。 您的代碼將如下所示:

def xml = new XmlSlurper().parseText('''
<list>
    <item a="1">a</item>
    <item a="2">b</item>
    <item a="1">c</item>
</list>
''')

xml.'**'.findAll { it.@a=='1' }.eachWithIndex { item, i ->
    println "hi" + i
}

結果是:

hi0
hi1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM