Groovy中的安全范围运算符?

时间:2013-07-03 23:05:59

标签: groovy range

Groovy有安全范围运算符吗?

例如,如果我有,

[1,2,3][0..10]

Groovy将抛出java.lang.IndexOutOfBoundsException:

是否有索引安全的方式来访问此范围?或者我是否总是必须在运行范围之前检查集合大小?

1 个答案:

答案 0 :(得分:7)

您可以使用take(n),这样您就可以使用特定数量的项目,如果集合中的项目太少,则不会出错:

def input = [1,2,3]
def result = input.take(10)
assert result == [1,2,3]

input = [1,2,3,4,5]
result = input.take(4)
assert result == [1,2,3,4]

如果您需要从偏移量开始,可以使用drop(n)修改原始集合:

def input = [1,2,3,4,5]
def result = input.drop(2).take(2)
assert result == [3,4]

这些都对集合的大小是安全的。如果在上一个示例中列表太小,则集合中可能只有一个或零个项目。