我刚刚开始使用Groovy,虽然它在's refreshing to finally have closures to work with in a Java environment, I'有问题让 count
像我想要的那样工作 .
假设我有一个类 Foo
,看起来像这样:
public class Foo {
private boolean isBar;
public boolean isBar() {
return isBar;
}
public boolean setIsBar(boolean isBar) {
this.isBar = isBar;
}
}
现在假设我有一个 List
的 Foo
个实例,我想计算 Foo
对象的数量,其中 isBar
为真 . 我期待它看起来像这样:
foos.count { it.isBar() }
或者使用属性表示法,只需:
foos.count { it.bar }
但是,这不会返回预期的结果,它只返回0 .
我尝试用一个简单的 List
来测试它 . 要计算2的出现次数,我可以这样做:
[1, 2, 2, 3].count(2)
但是我不应该使用闭包来执行以下操作吗?
[1, 2, 2, 3].count { it == 2 }
后者似乎也没有返回预期的结果 . 我所做的研究似乎表明我所做的是正确的,但显然不是 . 使用它的正确方法是什么?
3 回答
根据Groovy JDK
Collection#count(Closure)
直到1.8.0才添加 . 您可以尝试使用#sum
:1.6下的
Collection.count
文档:从而:
Collection.count
的文档在1.8以下:文档确实非常有用 .
在groovy 1.8中你可以写:
由于向后兼容性,DefaultGroovyMethods的新方法签名是: