在询问/编辑这个问题时,我注意到您可以这样做以完全静态安全地实现原始“奇怪重复的模板/通用模式”的要点:
trait MyTrait[This <: MyTrait[This]] { this: This =>
def myBinOp(other: This): This
}
这似乎让您消除了隐式转换和 Scala 的 ad-hoc 类型类模式的主要需求之一,因为 self-type 消除了声明的能力
class A extends MyTrait[Nothing]
和类似的事情,这是我所知道的原始模式的唯一问题。有什么我错过的吗?为什么不是每个人(在 Scala 中)都开始使用它?