【发布时间】:2012-05-22 19:39:42
【问题描述】:
我有两个抽象类,它们将相互引用。我如何/如何对类型成员进行类型绑定,以便派生 Hex 类的 SideT 成员中的 HexT 类型始终是派生 Hex 类?所以对于派生类 HexA 保证: HexA#SideT#HexT = HexA
同样,所有派生侧类的HexT成员中的SideT类型将是派生侧类:SideB#HexT#SideT = SideB
我在 Eclipse 2.1.0.M1 和 Eclipse 3.7.2 中使用 Scala 所有类都在单独的文件中。以下编译正常,但不能保证我想要什么:
abstract class Hex { type SideT <: Side {type HexT <= Hex } }
abstract class Side { type HexT <: Hex {type SideT <= side } }
class HexC() extends Hex() { type SideT = SideC }
class SideC extends Side { type HexT = HexC }
但以下内容在派生实现中无法编译:
abstract class Hex{type SideT <: Side {type HexT = this.type}}
abstract class Side{type HexT <: Hex {type SideT = this.type}}
class HexC() extends Hex(){
type SideT = SideC //This won't compile
}
class SideC extends Side {
type HexT = HexC //this won't compile
}
这是正确的吗?这应该编译吗?
【问题讨论】:
标签: scala type-bounds