Pregunta

Durante un tiempo he estado luchando para integrar Scala con los métodos Java que podría devolver null. Se me ocurrió la siguiente utilidad que ayuda mucho:

// produce an Option, nulls become None
object Maybe {
    def apply[T](t:T) = if (t==null) None else Some(t)
}

Maybe(javaClass.getResultCouldBeNull()).map( result => doSomeWork(result) )

Tengo algunas preguntas acerca de esta solución:

  1. ¿Hay un patrón mejor o más estándar que se utilizará?
  2. ¿Soy la duplicación de algo que ya existe?
  3. ¿Esta funcionalidad han ocultado trampas?
¿Fue útil?

Solución

Scala incorporado en Opción es lo usted está de salir a reinventar.

En este caso:

scala> val sOpt: Option[String] = Option(null)
sOpt: Option[String] = None

Otros consejos

¿Por qué se molestó en hacer un objeto acompañante todo fuera de él? Es sólo una función, por lo que no es necesario para poner en práctica como un objeto que se parece a una función.

object MyUtilities{
  // a whole bunch of other utilities that you use all over can also be put in this class.
  def maybe[T](t:T) = if (t==null) None else Some(t)
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top