gpt4 book ai didi

scala - 'for-comprension' 内元组值的模式匹配?

转载 作者:行者123 更新时间:2023-12-05 00:20:49 24 4
gpt4 key购买 nike

鉴于:

scala> val x: Either[Boolean, (Int, Int)] = Right( (5, 10) )
x: Either[Boolean,(Int, Int)] = Right((5,10))

我想对 x.right 中的第一个和第二个元组值进行模式匹配,但这不起作用:
scala> for { 
| (a, b) <- x.right
| } yield a

<console>:14: error: constructor cannot be instantiated to expected type;
found : (T1, T2)
required: scala.util.Either[Nothing,(Int, Int)]
(a, b) <- x.right
^

我可以做这样的事情:
scala> for { a <- x.right } yield a match { case (x, y) => x }
res5: scala.util.Either[Boolean,Int] = Right(5)

但是,有什么方法可以让我改变我的第一个非编译代码来工作吗?

最佳答案

这是一个已知的错误。见 SI-7222 .

现在,如果您要依赖 RightProjection ,您必须匹配整个元组,并使用 _1_2访问器(accessor)。

您也可以使用右偏 Eitherscalaz.\/ ,尽管这需要 Monoid[Boolean]在这个例子中。

关于scala - 'for-comprension' 内元组值的模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33601125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com