Question

Pendant un certain temps je lutte pour intégrer scala avec des méthodes Java qui pourraient retourner null. Je suis venu avec l'utilitaire suivant ce qui aide beaucoup:

// 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) )

J'ai quelques questions au sujet de cette solution:

  1. Y at-il un modèle plus standard ou plus à utiliser?
  2. Suis-je dupliquer quelque chose qui existe déjà?
  3. Est-ce que cette fonctionnalité a caché gotchas?
Était-ce utile?

La solution

intégré à Scala Option est ce vous exposant réinventer.

Dans ce cas:

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

Autres conseils

Pourquoi faire un objet pris la peine compagnon tout hors de lui? Il est juste une fonction, de sorte que vous n'avez pas besoin de mettre en œuvre comme un objet qui ressemble à une fonction.

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)
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top