Domanda

Per un po 'hanno lottato per integrare la scala con metodi Java che potrebbe restituire null. Sono venuto con la seguente programma di utilità che aiuta molto:

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

Ho alcune domande su questa soluzione:

  1. C'è un modello migliore o più standard per l'uso?
  2. I Am duplicare qualcosa che già esiste?
  3. Questo funzionalità hanno nascosto grattacapi?
È stato utile?

Soluzione

Scala di built-in opzione è ciò che siete di partire per reinventare.

In questo caso:

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

Altri suggerimenti

Perché preoccuparsi facendo un oggetto associato tutta fuori di esso? E 'solo una funzione, in modo che non è necessario per la sua attuazione come un oggetto che assomiglia a una funzione.

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)
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top