gpt4 book ai didi

Groovy 相当于 OCL forAll

转载 作者:行者123 更新时间:2023-12-01 09:03:53 25 4
gpt4 key购买 nike

什么是与 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;
}

我正在寻找一种懒惰地评估谓词的方法,以便在找到第一个不匹配项时完成评估。

最佳答案

您可以使用 every

items.every { it.matchesCriteria() }

关于Groovy 相当于 OCL forAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12018409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com