假设我有以下代码:

val either: Either[String, (Int, Int)] = Right((1,2))
for {
  (a, b) <- either.right
} yield a + b

当我在REPL中对其进行评估时,我得到了



为什么会有这样的错误?我不能从Either's Right中对元组进行模式匹配吗?

最佳答案

问题似乎是scala错误https://issues.scala-lang.org/browse/SI-7222。将for理解转换为flatMap/map表示法似乎可行。

val either: Either[String, (Int, Int)] = Right((1, 2))
either.right.map {
  case (a, b) =>
    a + b
}

either: Either[String,(Int, Int)] = Right((1,2))
res0: Serializable with Product with scala.util.Either[String,Int] = Right(3)

关于scala - Scala的元组为Right,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24066493/

10-11 21:18