この質問を尋ねたり編集したりしているときに、元の「不思議なことに繰り返されるテンプレート/ジェネリックパターン」のポイントを完全に静的な安全性で達成するためにこれを行うことができることに気付きました:
trait MyTrait[This <: MyTrait[This]] { this: This =>
def myBinOp(other: This): This
}
これにより、暗黙的な変換と Scala のアドホックな型クラス パターンの主要なニーズの 1 つを取り除くことができるように思われます。
class A extends MyTrait[Nothing]
私が知っている唯一の問題は、元のパターンです。見逃したものはありますか?(Scala の) 誰もがこれを使い始めないのはなぜですか?