1
如果沒有顯式導入,可以從伴隨對象中獲取隱含條件嗎?隱式沒有顯式導入?
我有以下情況:
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)
^
感謝。我過於專注於將隱含的內容添加到需要隱含的方法中。但是將它添加到構造函數在我的用例中很好用。 –