在Groovy中通过索引从FileScanner中查找项目

时间:2015-07-01 15:18:13

标签: collections groovy closures

我正在尝试从FileScanner(http://docs.groovy-lang.org/latest/html/api/org/codehaus/groovy/ant/FileScanner.html)中找到Groovy中给定索引的项目。以下闭包有效,但我不知道如何让它“返回”文件名:

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是索引。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

为什么不这样做:

def getFileNameByIndex = { int fileIndex ->
  list[fileIndex]?.fileName
}

因为它是扫描仪,而不是列表,我认为你需要:

def getFileNameByIndex = { int fileIndex ->
    int idx = 0
    scanner.find { idx++ == fileIndex }?.name
}