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
使它工作。
倒数第二行适用于这两种情况。
这有什么好的理由,和/或是否可以在不将特征移出对象的情况下使其工作?