了解Scala中的F型多态性



我正在尝试了解其工作原理。这是我尝试的:

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类型与类型类型,并简要介绍了您所遇到的问题。

相关内容

  • 没有找到相关文章

最新更新