Ми з колегою мали помилку, яка була зумовлена припущенням, що allMatch()
повернеться порожній потік false
.
if (myItems.allMatch(i -> i.isValid()) {
//do something
}
Звичайно, це свого роду наша вина, якщо ми припускаємо і не читаємо документацію. Але я не розумію, чому allMatch()
повертається поведінка за замовчуванням для порожнього потоку true
. Що було причиною цього? Подібно до anyMatch()
(яке протилежним чином повертає false), ця операція використовується імперативно, відступаючи від монади, і, ймовірно, використана в if
операторі. Беручи до уваги ці факти, чи є якась причина, чому allMatch()
встановлення значення true
за замовчуванням на порожній потік є бажаним для більшості використання?
allMatch
поверне істину, то це повинно бутиanyMatch
. До того ж для порожньої справи,allMatch(...) == noneMatch(...)
що теж дивно.