software - scala vs java
Diferencia entre el método isDefined y no vacío de Scala Option (4)
En Opción de Scala, ¿cuál es la diferencia entre su método definido y no definido? ¿Hay alguna diferencia de rendimiento entre los dos?
Desde Scala 2.13.x codebase, es:
def isDefined: Boolean = !isEmpty
...
final def nonEmpty = isDefined
Entonces, lógicamente, no hay diferencia entre los dos.
Puede que lo veas al revés.
Si la Option
no proporcionó un nonEmpty
no nonEmpty
, se proporcionaría a través de la conversión a un Iterable
, que invoca a la toList
.
¿Desea convertir su Option
en una List
solo para verificar esa propiedad? Por supuesto no.
Por lo tanto, el problema no es si lo que no es nonEmpty
es más eficiente con respecto a lo isDefined
, sino lo que se isDefined
a la conversión.
Si se basara en la conversión, terminaría haciendo lengthCompare
, lo que crea un iterador como sobrecarga.
Entonces la respuesta es que puedes usar el método que prefieras.
Son literalmente los mismos. Creo que nonEmpty
se proporciona principalmente para nonEmpty
coherencia con la API de la colección.
En cuanto a la fuente, la definición de no nonEmpty
es:
def final no vacío = es definido