Mój kolega i ja mieliśmy błąd, który wynikał z naszego założenia, że wywołanie pustego strumienia allMatch()
powróci false
.
if (myItems.allMatch(i -> i.isValid()) {
//do something
}
Oczywiście to trochę nasza wina, że przyjmujemy i nie czytamy dokumentacji. Ale nie rozumiem, dlaczego allMatch()
powraca domyślne zachowanie pustego strumienia true
. Jaki był tego powód? Podobnie jak anyMatch()
(które odwrotnie zwraca false), operacja ta jest używana w sposób imperatywny, który odchodzi od monady i prawdopodobnie jest używany w if
instrukcji. Biorąc pod uwagę te fakty, czy jest jakikolwiek powód, dla którego allMatch()
domyślne ustawienie true
pustego strumienia byłoby pożądane w większości zastosowań?
allMatch
zwraca prawdę, to powinnoanyMatch
. Dodatkowo dla pustej obudowy,allMatch(...) == noneMatch(...)
co też jest dziwne.