У нас с коллегой возникла ошибка, связанная с нашим предположением, что вызов пустого потока allMatch()
вернется false
.
if (myItems.allMatch(i -> i.isValid()) {
//do something
}
Конечно, это отчасти наша вина, если мы предполагаем, а не читаем документацию. Но я не понимаю, почему allMatch()
возвращается поведение по умолчанию для пустого потока true
. Что послужило причиной этого? Подобно anyMatch()
операции (которая, наоборот, возвращает false), эта операция используется императивным способом, который отходит от монады и, вероятно, используется в if
операторе. Учитывая эти факты, есть ли причина, по которой для большинства применений желательно использовать по allMatch()
умолчанию true
пустой поток?
allMatch
вернет true, то так и должно бытьanyMatch
. Вдобавок для пустого корпуса,allMatch(...) == noneMatch(...)
что тоже странно.