Supponiamo ho bisogno di convertire Option[Int]
-Either[String, Int]
a Scala. Mi piacerebbe farlo in questo modo:Converti Opzione per entrambi i casi a Scala
def foo(ox: Option[Int]): Either[String, Int] =
ox.fold(Left("No number")) {x => Right(x)}
Purtroppo il codice di cui sopra non compila e ho bisogno di aggiungere tipo Either[String, Int]
esplicitamente:
ox.fold(Left("No number"): Either[String, Int]) {x => Right(x)}
E 'possibile convertire Option
a Either
questo modo senza aggiungere il tipo?
Come ti suggeriscono di convertire Option
a Either
?
'ox.map (destro (_)) getOrElse (Sinistra ("Nessun numero")) "funziona pure, ma crea un'istanza intermedia" Opzione ". – knutwalker
E c'è anche 'ox.toRight (" Nessun numero ")' ma poiché questo metodo non ha un tipo di ritorno esplicito, viene inferito a 'Serializable con prodotto con o [String, Int] ' – knutwalker
@knutwalker Oh, grazie . Mi piace la tua soluzione 'toRight'. Aggiungerò semplicemente il tipo: 'ox.toRight (" Nessun numero "): O [String, Int]'. – Michael