gpt4 book ai didi

scala - @tailrec为什么这个方法不能用 'contains a recursive call not in tail position' 编译?

转载 作者:行者123 更新时间:2023-12-02 20:10:31 24 4
gpt4 key购买 nike

  @tailrec
private def loop[V](key: String): V = {
key match {
case _ => loop(key)
}
}

此方法无法编译,并提示它“包含不在尾部位置的递归调用”。有人可以向我解释一下发生了什么事吗?此错误消息对我来说没有意义。

最佳答案

如果指定了泛型类型,则编译正常:

import scala.annotation.tailrec

@tailrec
private def loop[V](key: String): V = {
key match {
case _ => loop[V](key)
}
}

我认为在这种情况下错误消息具有误导性。

简化版本可以更好地提示正在发生的事情:

scala>  @tailrec
| private def loop[V](key: String): V = {
| loop(key)
| }
<console>:14: error: could not optimize @tailrec annotated method loop: it is called recursively with different type arguments
loop(key)
^

关于scala - @tailrec为什么这个方法不能用 'contains a recursive call not in tail position' 编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45358283/

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