Я хочу использовать groovy findAll
с моим параметром для закрытия фильтрации
filterClosure = { it, param ->
it.getParam == param
}
Как мне теперь вызвать это замыкание в findAll? Как ниже?
myColl = someColl.findAll(filterClosure ??? )
Я хочу использовать groovy findAll
с моим параметром для закрытия фильтрации
filterClosure = { it, param ->
it.getParam == param
}
Как мне теперь вызвать это замыкание в findAll? Как ниже?
myColl = someColl.findAll(filterClosure ??? )
Предполагая, что ваша коллекция представляет собой список, вы можете использовать curry для заполнения дополнительного параметра закрытия вашим объектом:
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 для нее принимает замыкание с одним или двумя параметрами.