什么是与 OCL 中的 forAll 方法等效的 Groovy?
假设我有一个项目列表。
def items = new LinkedList<Item>();
当且仅当所有项目都符合特定条件时,表达谓词的 Groovy 方法是什么?
下面的代码片段不起作用,因为内部返回只是跳出each闭包的当前迭代,而不是跳出forAll方法。
boolean forAll(def items)
{
items.each { item -> if (!item.matchesCriteria()) return false; };
return true;
}
下面的代码片段应该可以解决问题,但感觉很麻烦,而且不像 Groovy。
boolean forAll(def items)
{
boolean acceptable = true;
items.each { item -> if (!item.matchesCriteria()) acceptable = false; };
return acceptable;
}
我正在寻找一种懒惰地评估谓词的方法,以便在找到第一个不匹配项时完成评估。