2013-07-12 2 views
0

나는 이것이 기존 질문인지 검색하는 방법조차 모릅니다. 나 그냥 예를 들어 보겠습니다 :필드를 기반으로 목록에서 최신 항목을 찾으십시오.

Call Instance Date Created   Resource Resource Status 
------------------------------------------------------------------ 
6557   2013-07-12 11:34:19 cwood  Accepted 
6556   2013-07-12 11:34:18 cwood  Accepted 
       2013-07-12 11:29:25 cwood  Ready 
6555   2013-07-12 09:24:41 cwood  Accepted 

어떻게 (그것이 준비 항목 전에 온으로) 마지막 허용 항목을받지 않고 정상 웃옷이 허용 항목을받을 수 있나요?

생성 된 날짜를 제외한 모든 필드는 사용자 정의 클래스 (호출, 사용자 [아니요, 리소스 아님] 및 ResourceStatus)입니다.

추가 코드가 유용할지 알려주세요.

+0

감사 편집 미샤를 들어, 아직 새로운 사실은 여기에 질문을합니다. –

답변

1

당신은 takeWhile() 사용할 수 있습니다

​assert [1,2] == [1,2,3,4,5].takeWhile { it < 3 }​ 

편집 허용과 준비가 아닌 다른 사용 가능한 상태에 대한
작은 테스트 케이스 (@dmahapatro의 대담이 답변을 편집 할 수) :

def list = ['A', 'A', 'B', 'A', 'R', 'A'] 
assert list.takeWhile{ it == 'A'} == ['A', 'A'] 
assert list.takeWhile{ it != 'R'} == ['A', 'A', 'B', 'A'] 
+0

Whoaaaaa. 나는 그루비에 무언가있을 것이라고 생각했다. 그것을 체크 아웃 시간. –

+0

붐! 마술처럼! 미래의 응답자를 위해, 나는 약 10 개의 ResourceHistory를 테이블 상단에서 잡아서 statusDescription = "Accepted"테스트를 통해 takeWhile에 공급했습니다. 필요에 따라 정확히 처음 2 개를주었습니다. @doelleri에게 다시 한 번 감사드립니다! –

+1

@CharlesWood '수락'상태와 '준비'상태 만 사용할 수 있습니까? 이 경우 귀하의 접근 방식은 정확합니다. 하지만 더 많은 상태가 있고'Accepted' 상태가'Ready' 전에 있기를 원하면'statusDescription! = 'Ready'를 사용해야합니다. 위의 업데이트를 참조하십시오. – dmahapatro

1

아래 문제 문에 대한 논리 :

아, 그건 좋은 지적 @dmahapatro. 때때로 사용자가 통화 중일 때 바쁘게가는 경우가 있는데, 통화 중일 때부터 준비가 된 후에 ("이전"이 "오른쪽으로"있는) Accepted 상태를 얻고 싶거나 통화 중 상태가 아닐 수도 있습니다 . 그래서, 나는 statusDescription! = 'Ready'및 statusDescription! = 'Busy'정도 할 필요가 있다고 가정합니다. 사람들이 그것을 사용하지 않고도 코드가 훨씬 깨끗해질 것입니다!

def list = ['A', 'A', 'A', 'R', 'A', 'A','B', 'A'] 

def statusBeforeBusy = list.takeWhile{ it != 'B'} 
println "Statuses before Busy: $statusBeforeBusy" //[A, A, A, R, A, A] 

def statusBeforeReady = list.takeWhile{ it != 'R'} 
println "Statuses before Ready: $statusBeforeReady" //[A, A, A] 

def statusaAfterReadyBeforeBusy = statusBeforeBusy.dropWhile{ it != 'R'}.tail() 
println "Statuses After Ready before Busy: $statusaAfterReadyBeforeBusy" //[A, A] 
+0

글쎄, 내가 말했듯이, 나는 'R'왼쪽에있는 모든 것을 얻는 것이다. 코드를 보내 주셔서 감사합니다. 이것은 for 루프 또는 뭔가보다 Groovier입니다. –

관련 문제