これは、暗黙的型とパス依存型のもう1つです。ここでなぜそれほど冗長にする必要があるのかわかりません:(注-答えを見つけました。以下を参照してください)
trait B
trait C[X]
trait A { def call[B1 <: B](implicit b: B1): C[B1] }
trait D extends B {
def set(c: C[this.type]): Unit
}
初挑戦:
def test1(a: A)(implicit d: D: Unit =
d.set(a.call) // found C[D] -- required C[d.type]
2回目の試行:
def test2(a: A)(implicit d: D): Unit =
d.set(a.call[d.type]) // could not find implicit value for parameter b: d.type
3回目の試行:
def test3(a: A)(implicit d: D): Unit =
d.set(a.call[d.type](d)) // works. why so much clutter!?