【发布时间】:2013-05-22 15:49:32
【问题描述】:
有没有人可以解释一下,这段代码是如何工作的?
class CSVParser {
static def parseCSV(file,closure) {
def lineCount = 0
file.eachLine() { line ->
def field = line.tokenize(",")
lineCount++
closure(lineCount,field)
}
}
}
use(CSVParser.class) {
File file = new File("test.csv")
file.parseCSV { index,field ->
println "row: ${index} | ${field[0]} ${field[1]} ${field[2]}"
}
}
链接:http://groovy-almanac.org/csv-parser-with-groovy-categories/
"parseCSV" 看起来是一种方法,但在 "file" 上用作闭包。闭包是“parseCSV”参数之一,最令人困惑的是 - 在这个方法中只有 closure(lineCount,field) 没有任何内部功能。
file.parseCSV 和 use(CSVParser.class) 上的闭包究竟是如何工作的?
【问题讨论】:
标签: parsing csv groovy closures