我正在玩斯卡拉(斯卡拉2.8)。假设我有一个具有嵌套特征的类,并且想要将该嵌套特征用作类的构造函数中参数的类型。这甚至有可能吗?这是我来最接近:斯卡拉在类构造函数中的嵌套特质
class OuterClass(traitParam:OuterClass#InnerTrait) {
trait InnerTrait { }
val y:InnerTrait = traitParam
}
没有,即使编译第三行,但只要我尝试实际使用traitParam
作为InnerTrait
我得到一个编译错误:
type mismatch; found: OuterClass#InnerTrait required: OuterClass.this.InnerTrait.
我无法弄清楚我可以做什么(如果有的话)。做
class OuterClass(traitParam:OuterClass.this.InnerTrait)
而是,如错误消息可能表明,不会编译。除了在OuterClass
以外移动InnerTrait
之外,还有其他选择吗?如果您想知道为什么我想要这样做,答案是在我的实际代码中,OuterClass
的等效参数的类型参数会在InnerTrait
中使用。如果我将它移到外面,那么每次参考内在特质时都必须重新说明类型参数。