【发布时间】:2011-11-19 03:12:06
【问题描述】:
我有 2 个相关的特征。 Dao 将用作一个类,而 DaoHelper 将由 Dao 的伴生对象使用。我希望 trait Dao 能够使用 DaoHelper 中定义的函数,我能弄清楚如何做到这一点的唯一方法是将伴随 trait 定义为 val。然而不知何故,同伴希望它的类型是 D.this.T,我认为我已将其定义为 Doa 的子类型。我在这里很困惑。对于新手问题,我深表歉意,我来自动态语言背景。
/test2.scala:14: 在 Test.DaoHelper[D.this.T] 类型的 trait Dao 中覆盖值伴侣; [错误] 值伴侣的类型不兼容 [错误] val 伴侣 = D
object Test extends App {
trait Dao {
type T <: Dao
val companion: DaoHelper[T]
def getHelpfulData = companion.help
}
trait DaoHelper[Dao] {
val help = "Some helpful data"
}
class D extends Dao {
val companion = D
}
object D extends DaoHelper[D]
}
【问题讨论】:
标签: scala traits subtype abstract-type