【发布时间】:2010-09-03 01:56:46
【问题描述】:
我正在玩 scala (scala 2.8)。假设我有一个具有嵌套特征的类,并且想要使用该嵌套特征作为类构造函数中参数的类型。这甚至可能吗?这是我最近的一次:
class OuterClass(traitParam:OuterClass#InnerTrait) {
trait InnerTrait { }
val y:InnerTrait = traitParam
}
没有甚至编译的第三行,但是当我尝试实际使用 traitParam 作为 InnerTrait 时,我得到一个编译器错误:
类型不匹配;找到:OuterClass#InnerTrait 需要:OuterClass.this.InnerTrait。
我不知道我能做什么(如果有的话)。在做
class OuterClass(traitParam:OuterClass.this.InnerTrait)
相反,正如错误消息所暗示的那样,它不会编译。除了将InnerTrait 移到OuterClass 之外,我还有其他选择吗?如果您想知道我为什么要这样做,答案是在我的实际代码中,OuterClass 的等价物具有类型参数,然后将在InnerTrait 中使用。如果我把它移到外面,那么我每次引用内部特征时都必须重新声明类型参数。
【问题讨论】: