2009-09-07 4 views
7

은 어떻게 지금 findall은이 폐쇄 호출 할 수 있습니다 필터링 폐쇄그루비 findall은 폐쇄 매개 변수

filterClosure = { it, param -> 
    it.getParam == param 
} 

내 PARAM으로 findAll를 그루비 사용하려면? 아래처럼?

myColl = someColl.findAll(filterClosure ???) 

답변

7

목록 컬렉션을 한 가정, 당신은 당신의 물건으로 추가 폐쇄 매개 변수를 채우는 데 카레를 사용할 수 있습니다 위의 코드에서

def someColl = ["foo", "bar", "foo", "baz", "foo"] 

def filterClosure = { it, param -> it.getParam == param } 

myColl = someColl.findAll(filterClosure.curry([getParam:'foo'])) 

assert ["foo", "foo", "foo"] == myColl 

의 filterClosure는 ""무엇 할당됩니다 카레에 매개 변수로 전달되고 "param"은 findAll의 콜렉션 항목으로 전달됩니다. findAll은 하나 또는 두 개의 매개 변수 중 하나를 사용하여 클로저를 사용하기 때문에 Map 컬렉션에서는 작동하지 않습니다.