【发布时间】:2012-08-13 21:08:59
【问题描述】:
我刚开始使用 Groovy,虽然在 Java 环境中终于可以使用闭包令人耳目一新,但我无法让 count 像我想要的那样工作。
假设我有一个类Foo,看起来像这样:
public class Foo {
private boolean isBar;
public boolean isBar() {
return isBar;
}
public boolean setIsBar(boolean isBar) {
this.isBar = isBar;
}
}
现在假设我有一个List 的Foo 实例,并且我想计算isBar 为真的Foo 对象的数量。我期待它看起来像这样:
foos.count { it.isBar() }
或者使用属性表示法,简单地说:
foos.count { it.bar }
但是,这并没有返回预期的结果,它只是返回 0。
我尝试用一个简单的 List 整数来测试它。要计算 2 的出现次数,我可以这样做:
[1, 2, 2, 3].count(2)
但是我不应该能够使用闭包执行以下操作吗?
[1, 2, 2, 3].count { it == 2 }
后者似乎也没有返回预期的结果。我所做的研究似乎表明我正在做的事情是正确的,但显然不是。正确的使用方法是什么?
【问题讨论】:
-
为我工作,使用 groovy 1.8.4
-
当然,我使用的是 1.6.0,因为它是一个较旧的项目,但如果升级到 1.8 会有所不同,我会感到惊讶。
-
你应该让你的
Foo类更groovyish。class Foo { boolean bar }(很难让它在评论中看起来不错......)。 Setter/getter 会自动为您服务。