2013-07-03 47 views
4

Groovy是否有安全的範圍運算符?Groovy的安全範圍操作員?

舉例來說,如果我有,

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

的Groovy將拋出一個java.lang.IndexOutOfBoundsException:

是否有訪問此範圍內的指數安全的方式?或者,我是否必須在運行範圍之前檢查集合的大小?

回答

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] 

這些都是對集合的大小的保險箱。如果上一個示例中的列表太小,則集合中可能只有一個或零個項目。

+0

我忘了提及這些方法是在Groovy 1.8.1 – OverZealous

+1

+1中添加的。另外:'def result = input.drop 2 take 2' – Will