2013-07-03 3 views
4

Groovy에 안전한 범위 연산자가 있습니까? 예를 들어 Groovy의 안전한 범위 연산자?

나는 경우

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

그루비 던질 것 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] 

는 오프셋, 당신이 할 수있는 시작해야하는 경우

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

이 두 컬렉션의 크기에 대한 안전 : 하지 원래 모음을 수정할 않는, drop(n) 사용합니다. 마지막 예제에서 목록이 너무 작 으면 컬렉션에 하나 또는 하나의 항목 만있을 수 있습니다.

+0

나는이 방법들이 Groovy 1.8.1 – OverZealous

+1

+1에 추가되었다는 것을 잊어 버렸다. 또한 :'def result = input.drop 2 take 2' – Will

관련 문제