Има ли някой, който може да ми обясни как работи тази част от кода?
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)
?