Предположим, мне нужно преобразовать Option[Int]
в Either[String, Int]
в Scala. Я хотел бы сделать это следующим образом:Преобразование опции в Либо в Scala
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)}
Можно ли преобразовать Option
в Either
этой путь без добавления типа?
Как вы предлагаете преобразовать Option
в Either
?
'ox.map (Right (_)) getOrElse (слева («Нет числа»)) 'работает, но создает промежуточный экземпляр« Option ». – knutwalker
И есть также 'ox.toRight (« No Number »)', но поскольку этот метод не имеет явного типа возврата, он выводится на 'Serializable with Product with Lither [String, Int]' – knutwalker
@knutwalker О, спасибо , Мне нравится ваше решение 'toRight'. Я просто добавлю тип: 'ox.toRight (« No Number »): либо [String, Int]'. – Michael