Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
getStaffWithCriteria — несомненно метод. И все же я настаиваю на том, что конструкция, передаваемая в качастве второго параметра этому методу — ничто иное как замыкание (closure).for(e in staff) чем тут «e» не переменная вне замыкания?def property_= = property
abstract class Criteria {
abstract boolean matches(Employee e);
}
List getEmployeeWithCriteria(List staff, Criteria criteria) {
List result = new ArrayList();
for (Employee e: staff) {
if (criteria.matches(e)) {
result.add(e);
}
}
return result;
}
println getStaffWithCriteria(staff, new Criteria(){ boolean matches(Employee e) { return e.salary > 600; } });
println getStaffWithCriteria(staff, new Criteria(){ boolean matches(Employee e) { return e.age < 27; } });
println getStaffWithCriteria(staff, new Criteria(){ boolean matches(Employee e) { return e.dept == 'A1';} });
Groovy inspiration — Feel the difference