我有两个抽象的分类, 彼此互相保留引用。 如何/ 能够将类型成员捆绑起来, 使衍生的十六进制类的SideT成员中HexT的类型永远是衍生的十六进制类? 因此, 对于导出类的六进制A, 保证 : HexA# SideT# HexT = 六进制A
类似地,所有衍生的子类的HexT成员中的SideT类型将是衍生的副类:SideB#HexT#SideT=SideB
我使用 Scala 来表示 Eclipse 2.1.0. M1 和 Eclipse 3.7.2 。 所有班级都在单独的文件中。 以下编译为 " 确定 ", 但不保证我要的东西:
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
}
这是否正确?