如何指定列表末尾的范围?

时间:2012-12-12 21:00:20

标签: groovy

请考虑以下声明:

process.text.readLines [3 ..< -1]

它似乎应该有效。基本上,剥离数组的前两个元素。但是,范围运算符被结尾-1混淆,因为它小于-1。您可以通过将数组存储为变量并使用size()替换-1来轻松解决此问题,但这需要额外的行和变量的定义。任何其他想法如何轻松表达这一点?

2 个答案:

答案 0 :(得分:7)

我相信你能做到:

process.text.readLines()[ 2..-1 ]

或:

process.text.readLines().drop( 2 )

答案 1 :(得分:2)

这也可以解决问题:

process.text.readLines().with { it[2..size()-1] }

比上面建议的简单地调用drop更长,但根据更大的上下文,它可能会读得更好。 with可让您绕过定义新变量。