【发布时间】:2016-06-25 03:08:56
【问题描述】:
是否可以在没有显式导入的情况下从伴随对象中获取隐含?
我有以下情况:
trait Foo[A] {
def foo(f: A): String
}
case class Bar(name: String)
object Bar {
implicit object FooBar extends Foo[Bar] {
def foo(f: Bar) = f.name
}
}
class TestImplicits[T] {
def sayFoo(t: T)(implicit ev: Foo[T]) = ev.foo(t)
def sayFooIndirect(t: T) = sayFoo(t)
}
我想要实现的是能够实例化 TestImplicits 并调用 sayFooIndirect 方法,而无需将隐式通过它隧道传递到 sayFoo 方法。
val b = new Bar("test")
val t = new TestImplicit[Bar]
t.sayFooIndirect(b)
但是代码无法编译:
could not find implicit value for parameter ev: Foo[T]
def sayFooIndirect(t: T) = sayFoo(t)
^
【问题讨论】:
标签: scala