Groovy findAll闭包参数

时间:2009-09-07 05:27:02

标签: groovy parameters findall

我希望使用groovy findAll和我的param过滤闭包

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

我现在如何在findAll中调用此闭包?如下所示?

myColl = someColl.findAll(filterClosure ??? )

1 个答案:

答案 0 :(得分:7)

假设您的集合是一个列表,您可以使用curry用您的对象填充额外的closure参数:

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“it”将被分配给作为参数传递给curry的内容,并且“param”从findAll传递给一个集合项。这对于Map集合不起作用,因为findAll for它需要一个带有一个或两个参数的闭包。