按 Groovy 中的索引从 FileScanner 中查找项目
Find item from FileScanner by index in Groovy
我正在尝试从 FileScanner (http://docs.groovy-lang.org/latest/html/api/org/codehaus/groovy/ant/FileScanner.html) 中为 Groovy 中的给定索引查找项目。以下闭包有效,但我不确定如何将其设为 "return" 文件名:
def getFileNameByIndex = { int fileIndex ->
scanner.eachWithIndex { fileName, index ->
if (index == fileIndex)
println "${index}. Filename ${fileName}"
// how do I return the fileName here?
}
}
我应该可以这样调用它:getFileNameByIndex(10),其中 10 是索引。
有人可以帮忙吗?
为什么不直接做:
def getFileNameByIndex = { int fileIndex ->
list[fileIndex]?.fileName
}
由于它是一个扫描器,而不是一个列表,我认为您需要:
def getFileNameByIndex = { int fileIndex ->
int idx = 0
scanner.find { idx++ == fileIndex }?.name
}
我正在尝试从 FileScanner (http://docs.groovy-lang.org/latest/html/api/org/codehaus/groovy/ant/FileScanner.html) 中为 Groovy 中的给定索引查找项目。以下闭包有效,但我不确定如何将其设为 "return" 文件名:
def getFileNameByIndex = { int fileIndex ->
scanner.eachWithIndex { fileName, index ->
if (index == fileIndex)
println "${index}. Filename ${fileName}"
// how do I return the fileName here?
}
}
我应该可以这样调用它:getFileNameByIndex(10),其中 10 是索引。
有人可以帮忙吗?
为什么不直接做:
def getFileNameByIndex = { int fileIndex ->
list[fileIndex]?.fileName
}
由于它是一个扫描器,而不是一个列表,我认为您需要:
def getFileNameByIndex = { int fileIndex ->
int idx = 0
scanner.find { idx++ == fileIndex }?.name
}