Sono Maybes un modello buono per Scala?
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:
- C'è un modello migliore o più standard per l'uso?
- I Am duplicare qualcosa che già esiste?
- Questo funzionalità hanno nascosto grattacapi?
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