object Test {
trait Foo
trait TC[A]
object TC {
implicit def tc1[F <: Foo] = new TC[F] {}
implicit def tc2[F1 <: Foo, F2 <: Foo] = new TC[(F1, F2)] {}
}
object Bar {
trait X
val c = new Foo with X
def bar[A](a: this.type => A)(implicit tc: TC[A]) = 1
}
Bar bar (_.c)
Bar bar (b => (b.c, b.c))
}
最後一行給編譯器錯誤「無法找到參數tc ...的隱式值」。內在特徵突破隱含參數
現在:移動trait X
以外的object Bar
使它的工作。
接下來的最後一行適用於這兩種情況。
這是否有什麼好的理由,和/或是否有可能在不將物體移出物體的情況下工作?
謝謝,有趣的猜測。對於你的最後一個問題,不幸的是,在我的非最小化版本中,保持內在特徵是至關重要的。 :) –