2
我有以下代碼女巫將是隱含對象的基:麻煩與斯卡拉隱含參數
trait Foo[-T] {
def hello(obj: T)
}
trait Model extends Serializable {
def bar()(implicit foo: Foo[Model]) = { foo.hello(this) }
}
class SerializableFoo[T <: Serializable] extends Foo[T] {
def hello(obj: T) { println("hello from SerializableFoo") }
}
class FOSModelFoo[T <: Model] extends Foo[T] {
def hello(obj: T) { println("hello from FOSModelFoo") }
}
object Foo {
implicit object DefaultFoo extends SerializableFoo[Model]
}
class FOSModel extends Model {
implicit object InnerFoo extends FOSModelFoo
}
當我請一個FOSModel實例吧(),我期待將要使用的FOSModelFoo,但它發生它調用SerializableFoo。
我錯過了什麼?
我按照你的說法試過了,但它仍然是一樣的。我想要做的是基本上有一個默認隱式Foo(SerializableFoo)與模型(模型trait)一起使用,並且對於特定的模型實例(FOSModel)具有Foo(FOSModelFoo)的特定實例。 – halfwarp
您是否將問題2考慮在內?即如果兩種情況下的_static_類型都是Model,則無法獲得所需的結果。如果是,請使用更新的代碼編輯問題。 –