2014-06-09 3 views
-1

나는 그루비 콜렉션을 배열로 가지고 있으며 0부터 'n'까지의 값을 포함합니다. 일련의 조건이 발생할 때 특정 배열 인덱스를 찾아야합니다. 그리고 배열의 모든 값을 스캔 할 필요는 없지만 사전 정의 된 간격으로 건너 뛸 수 있습니다. 예를 들어 배열의 10 개 값마다 조건을 찾습니다. 누군가 이렇게 할 수있는 방법을 말해 줄 수 있습니까? 예를 들어, 난 내가 방법을 각각 eachwithindex 같이 대신 하나의 변수를 점프 할 수 있습니다 중 하나를 찾을 수 없습니다, 내가 배열의 모든 가능한 방법을 모색 할 때그루비 컬렉션 - 조건과 일치하는 요소 찾기

def alltimes = [0 . . . . . 10000] 
def end_time = 10000 
def time = 0 
while(time <= end_time) 
{ 
    // check the condition for alltimes[time] 
    if(condition_satisfied){ 
     println "condition satisfied at time ${time}" 
     break 
    } 
    time = time + 50 
} 

아래에 다음과 같은 somehting하고 싶어 .

메타 클래스를 사용하고 새로운 방법을 만들어야하는 것처럼 보입니까?

+0

당신이 예를 들어 가지고 올 수 있습니까? 그것은 당신이 더 필요한 것을 설명하는 데 도움이 될 수 있습니다 ... –

+0

아직도 이해가 안돼 ... 당신의 예제에서 컬렉션은 어디에 있습니까? –

+0

죄송합니다, 지금 내 게시물을 편집했습니다. – user3721344

답변

2

당신은이에 대한 find를 사용할 수 있습니다

무두질에 대한 익은입니다
def allTimes = 0..10000 

Closure<Boolean> checkCondition = { all, single -> 
    single > 300 
} 

​(0..10000).step(50)​.find { time -> ​checkCondition(allTimes, time) }​ 

:

def allTimes = 0..10000 

Closure<Boolean> checkCondition = { all, single -> 
    single > 300 
} 

​(0..10000).step(50)​.find checkCondition.curry(allTimes)​ 
+0

고마워 .. .. 그 일을 잘해줬 :-) – user3721344

관련 문제