2017-08-01 80 views
0

为什么groovy .each函数只是一次迭代,而它位于另一个迭代中,如下所示代码?为什么groovy每个函数都没有迭代,而另一个里面

代码:

@Grab('com.xlson.groovycsv:groovycsv:1.1') 
import static com.xlson.groovycsv.CsvParser.parseCsv 
import groovy.xml.MarkupBuilder 
import groovy.xml.StreamingMarkupBuilder 
def input = "input.xml" 
def xml = new XmlSlurper().parse(input) 
df = new FileReader("file.csv") 
def writer = new StringWriter() 
def data = parseCsv(df, readFirstLine: true) 
new MarkupBuilder(writer).root { 
    xml.children().each { 
     it.attributes() 
     println ("Here I am") 
     data.eachWithIndex { row,id->      
      println ("This line should be iterated all time") // but iterated only one time    
     } 
    } 
} 

输出就这样产生了,

Here I am 
    This line should be iterated all time 
    This line should be iterated all time 
    This line should be iterated all time 
    Here I am 
    Here I am 

预期输出:

Here I am 
This line should be iterated all time 
This line should be iterated all time 
This line should be iterated all time 
Here I am 
This line should be iterated all time 
This line should be iterated all time 
This line should be iterated all time 
Here I am 
This line should be iterated all time 
This line should be iterated all time 
This line should be iterated all time 

回答

0

这是因为parseCsv返回Iterator,不是Iterable

source code of groovycsv library

static Iterator parseCsv(Map args = [:], String csv) { 
    new CsvParser().parse(args, csv) 
} 
+0

感谢的人,现在我知道了...... –

相关问题