2015-08-27 3 views

ответ

6

Потому что - тип возврата LeftProjection.map.

map[X](f: (A) ⇒ X): Product with Serializable with Either[X, B] 

Но это не проблема. Вы можете использовать тип приписывание, если вы хотите:

val r: Either[String, TwoCaseClass] = some.left.map(_.toString) 

Посмотрите на примеры на Either docs:

val l: Either[String, Int] = Left("flower") 
val r: Either[String, Int] = Right(12) 
l.left.map(_.size): Either[Int, Int] // Left(6) 
r.left.map(_.size): Either[Int, Int] // Right(12) 
l.right.map(_.toDouble): Either[String, Double] // Left("flower") 
r.right.map(_.toDouble): Either[String, Double] // Right(12.0) 
+1

Стоит отметить, что в настоящее время (Scala 2,12) Либо правильно предвзятым. Вам не нужно явно делать правильную проекцию для сопоставления значения. Итак: r.map (_. ToDouble) эквивалентно r.right.map (_. ToDouble) – Guillaume

 Смежные вопросы

  • Нет связанных вопросов^_^