1

我试图了解它是如何工作的。这是我尝试过的:

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 的情况下,这绝对不是我想要的。有没有办法防止在编译时发生类似的事情?

4

1 回答 1

2

正如@Alec 指出的那样,简短的回答是不幸的是,您似乎无法做到这一点;但是,大多数您希望以 F 有界类型提供的方式约束类型的实例都可以替换为类型类。Rob Norris对 F 有界类型与类型类进行了很好的讨论,并简要介绍了您遇到的问题。

于 2017-09-01T06:39:31.887 回答