什么是与OCL中的forAll方法等效的Groovy?
假设我有一个项目列表.
def items = new LinkedList<Item>();
当且仅当所有项都符合特定条件时,Groovy表达谓词的方式是什么?
以下代码片段不起作用,因为内部返回仅跳出每个闭包的当前迭代,而不是跳出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;
}
我正在寻找一种方法来懒惰地评估谓词,以便在找到第一个不匹配的项目时完成评估.