Mi colega y yo tuvimos un error que se debió a nuestra suposición de que allMatch()
regresaría una llamada de flujo vacía false
.
if (myItems.allMatch(i -> i.isValid()) {
//do something
}
Por supuesto, es culpa nuestra por asumir y no leer la documentación. Pero lo que no entiendo es por qué allMatch()
regresa el comportamiento predeterminado para una secuencia vacía true
. ¿Cuál fue el motivo de esto? Al igual que el anyMatch()
(que al contrario devuelve falso), esta operación se usa de manera imperativa que sale de la mónada y probablemente se usa en una if
declaración. Teniendo en cuenta estos hechos, ¿hay alguna razón por la que tener la allMatch()
opción predeterminada true
en un flujo vacío sea deseable para la mayoría de los usos?
allMatch
devuelve verdadero, también debería hacerloanyMatch
. Además, para el caso vacío,allMatch(...) == noneMatch(...)
que también es extraño.