gpt4 book ai didi

scala - 为什么我必须在 unapply 方法中返回 Some

转载 作者:行者123 更新时间:2023-12-01 09:14:59 27 4
gpt4 key购买 nike

如果我不在 Some 方法中使用 unapply,为什么以下代码不起作用?

scala> object T {
| def unapply(i:Int) = (i+1,i+2) //Some not used, I get error
| }
defined object T

scala> 1 match {
| case T(x,y) => println(x,y)
| }
<console>:14: error: an unapply result must have a member `def isEmpty: Boolean
case T(x,y) => println(x,y)
^

scala> object T {
| def unapply(i:Int) = Some(i+1,i+2) //Some used. No error
| }
defined object T

scala> 1 match {
| case T(x,y) => println(x,y)
| }
(2,3)

标度>

最佳答案

你没有。您必须返回具有 isEmpty() 方法和 get() 方法的内容。 Option 两者都提供,所以这是一个方便的解决方案。

这就是编译器知道匹配成功的方式。如果 isEmpty() 返回 true 则匹配失败并尝试下一个匹配(如果有下一个)。

关于scala - 为什么我必须在 unapply 方法中返回 Some,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46897540/

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