Если я создаю значение для понимания с определением значения с вариантом, он работает как ожидалось:
scala> for (a <- Some(4); b <- Some(5); val p = a * b) yield p
res0: Option[Int] = Some(20)
делает то же самое с любыми работами, если у меня нет Определение значения:
scala> for (a <- Right(4).right; b <- Right(5).right) yield a * b
res1: Either[Nothing,Int] = Right(20)
, но если я использовал определение значения, SCALA, кажется, выводит неверный тип контейнера для понимания:
scala> for (a <- Right(4).right; b <- Right(5).right; val p = a * b) yield p
<console>:8: error: value map is not a member of Product with Serializable with Either[Nothing,(Int, Int)]
for (a <- Right(4).right; b <- Right(5).right; val p = a * b) yield p
^
Почему это делает это? Каким образом доступны это поведение?