Frage

Für eine Weile habe ich zu kämpfen scala Integration mit Java-Methoden, die null zurückgeben könnten. Ich kam mit dem folgenden Dienstprogramm, das hilft viel:

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

Ich habe ein paar Fragen zu dieser Lösung:

  1. Gibt es ein besseres oder mehr Standardmuster zu bedienen?
  2. Bin ich etwas zu duplizieren, die bereits vorhanden?
  3. hat diese Funktionalität gotchas versteckt?
War es hilfreich?

Lösung

Scala-interne Option ist, was Sie Einstellung neu zu erfinden aus.

In diesem Fall:

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

Andere Tipps

Warum sich die Mühe aus ihm einen ganzen Begleitobjekt zu machen? Es ist nur eine Funktion, so dass Sie es nicht als ein Objekt implementieren müssen, das aussieht wie eine Funktion.

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)
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top