我想在参数中使用groovy findAll
来过滤闭包
filterClosure = { it, param ->
it.getParam == param
}
现在如何在findAll中调用此闭包?像下面吗?
myColl = someColl.findAll(filterClosure ??? )
最佳答案
假设您的收藏是一个列表,则可以使用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会使用带有一个或两个参数的闭包。