gpt4 book ai didi

scala - 如何覆盖具有依赖返回类型的方法?

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

我在 Scala 2.9.2 实现一个声明依赖返回类型的方法时遇到了麻烦。以下代码

object DependentTypesQuestion {
def ??? = throw new UnsupportedOperationException
trait X {
trait Y
}
trait Z {
def z(x: X): x.Y
}
object Z extends Z {
override def z(x: X): x.Y = ???
}
}

在 2.9.2 下编译时产生以下错误信息:
overriding method z in trait Z of type (x: DependentTypesQuestion.X)x.Y;  method z has incompatible type

在 2.10.0-M4 中,问题似乎已得到修复,但不幸的是,我的项目目前与 2.9 相关联。

Is it possible to work around this issue in 2.9.2?



(或者,是否有任何包含 2.10 的反向移植修复的 2.9.3 的前景?)

最佳答案

如果您真的坚持使用 2.9.x,那么以下可能是您的解决方法,

object DependentTypesQuestion {
def ??? = throw new UnsupportedOperationException
trait X {
trait Y
}
trait Z[D[_ <: X with Singleton]] {
def z[T <: X with Singleton](x: T): D[T]
}

type Dep[T <: X with Singleton] = T#Y

object Z extends Z[Dep] {
override def z[T <: X with Singleton](x: T): x.Y = ???
}
}

关于scala - 如何覆盖具有依赖返回类型的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12195312/

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