ScalaでOption[Int]
をEither[String, Int]
に変換する必要があるとします。私はこのようにそれをやってみたい:オプションをスカラでどちらかに変換する
def foo(ox: Option[Int]): Either[String, Int] =
ox.fold(Left("No number")) {x => Right(x)}
残念ながら、上記のコードはコンパイルできないと私は明示的にタイプEither[String, Int]
を追加する必要があります。
ox.fold(Left("No number"): Either[String, Int]) {x => Right(x)}
はそれがEither
これにOption
を変換することが可能ですタイプを追加せずに?
どうすればOption
をEither
に変換するといいですか?
'ox.map(右(_))getOrElse(左( "No number")) 'も同様に機能しますが、中間の' Option'インスタンスを作成します。 – knutwalker
また、 'ox.toRight(" No Number ")'もありますが、このメソッドは明示的な戻り値の型を持たないため、 'Serializable with Product [String、Int] 'のように推測されます。 – knutwalker
@ knutwalker 。私はあなたの 'toRight'ソリューションが好きです。私はちょうどタイプを追加します: 'ox.toRight(" No Number "):[String、Int]'のいずれかです。 – Michael