我正在尝试了解其工作原理。这是我尝试的:
abstract class TestBase { self =>
type T >: self.type <: TestBase
}
class Test1 extends TestBase {
type T = Test1
}
class Test2 extends Test1{
override type T = Test1 // daaaaamn
}
问题是,如果继承层次结构的长度超过2。在test2的情况下,绝对不是我想要的。有没有办法防止在编译时发生类似的事情?
,因为@Alec指出了简短的答案是不幸的是,似乎您无法执行此操作;但是,大多数您想以F型类型提供的方式约束类型的大多数实例都可以用Typeclasses代替。罗布·诺里斯(Rob Norris)很好地讨论了F-BON-BOND类型与类型类型,并简要介绍了您所遇到的问题。