我只是想问一下这两种方法的主要区别。当groovy API说谓词时,它意味着什么?
答案 0 :(得分:6)
简短说明:
谓词是一个返回布尔值的函数/表达式
只有当谓词对所有元素的计算结果为true时,map.every才返回
示例(伪代码):
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
答案 1 :(得分:5)
如果您阅读文档;
迭代地图的条目,并检查谓词是否对至少一个条目有效
Wheras Map.every says
迭代地图的条目,并检查谓词是否对所有条目有效。
通过谓词表示它通过闭包运行条目并检查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