tutorial software examples blanquerna bayer scala

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