Groovy を使い始めたばかりで、Java 環境でクロージャを使用countできるようになったことは新鮮ですが、思い通りに作業するには問題があります。
Foo次のようなクラスがあるとします。
public class Foo {
private boolean isBar;
public boolean isBar() {
return isBar;
}
public boolean setIsBar(boolean isBar) {
this.isBar = isBar;
}
}
Listここで、 ofインスタンスがあり、が trueであるオブジェクトFooの数を数えたいとしましょう。私はそれが次のようになることを期待していました:FooisBar
foos.count { it.isBar() }
または、プロパティ表記を使用すると、次のようになります。
foos.count { it.bar }
ただし、これは期待される結果を返さず、0 を返すだけです。
Listこれを単純なintでテストしてみました。2 の出現をカウントするには、次のようにします。
[1, 2, 2, 3].count(2)
しかし、クロージャーを使用して次のことができるはずではありませんか?
[1, 2, 2, 3].count { it == 2 }
後者も期待される結果を返していないようです。私が行った調査は、私のしていることは正しいことを示しているようですが、明らかにそうではありません。これを使用する正しい方法は何ですか?