1

我只想问这两种方法的主要区别。当 groovy API 说谓词时,这意味着什么?

4

2 回答 2

6

简短说明:

  • 谓词是返回布尔值的函数/表达式

  • map.every 仅当谓词对所有元素的计算结果都为 true 时才返回 true

  • 如果谓词对至少一个元素的计算结果为 true,则 map.any 返回 true

示例(伪代码):

a = [1,2,3,4,5]
a.every { |x| x < 3 } => false, since 3,4 and 5 are not smaller than 3
a.any   { |x| x < 3 } => true, since 1 and 2 are smaller than 3
于 2012-06-12T10:48:11.943 回答
5

如果您阅读文档;

Map.any 说

遍历映射的条目,并检查谓词是否对至少一个条目有效

Wheras Map.every 说

遍历映射的条目,并检查谓词是否对所有条目都有效。

谓词意味着它通过闭包运行条目并检查 Groovy Truthiness 的结果

示例(使用 Map 将 Frank 的伪代码扩展为实际的 groovy 代码):

a = [a:1,b:2,c:3,d:4]
assert a.every { key, value -> value < 3 } == false // since 3 and 4 are not smaller than 3
assert a.any   { key, value -> value < 3 } == true  // since 1 and 2 are smaller than 3
于 2012-06-12T10:48:33.037 回答