假设我有以下代码:
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/