同僚と私には、空のストリーム呼び出しallMatch()
が返されるという想定に起因するバグがありましたfalse
。
if (myItems.allMatch(i -> i.isValid()) {
//do something
}
もちろん、ドキュメントを想定して読んでいないのは私たちのせいです。しかし、私が理解していないのはallMatch()
、空のストリームのデフォルトの動作がなぜ戻るのかということですtrue
。これの理由は何でしたか?同様にanyMatch()
(逆に偽を返す)、この操作はモナドを出発不可欠な方法で使用され、おそらくで使用if
声明。これらの事実を考慮すると、ほとんどの用途でallMatch()
デフォルトでtrue
空のストリームを使用することが望ましい理由はありますか?
allMatch
trueを返す場合は、そうする必要があると予想されますanyMatch
。さらに、空の場合についても、allMatch(...) == noneMatch(...)
これも奇妙です。