混合假设以下情况如何获得隐性和显性相同的值对齐时,无论是在
我有一个性状A和性状B,这两个声明具有相同的名称和类型的值。
A定义的值明确,而B定义它隐含
A和B是从外部库,并且不能被改变。我不想分叉。
我想在C类是在我自己的代码来使用这两者
我怎样才能让他们的C类里面对齐? 我想B.foo从A.foo值
// External code, cant touch
trait A{
val foo = "boom"
}
trait B{
implicit val foo: String
}
// My class
class C extends A with B {
//uh oh??
}
更新(从碧玉-M帮助)
// External code, cant touch
trait A{
val foo = "boom"
}
trait B{
implicit val foo: String
def implBang()(implicit s: String) = s
def doTheBang() = implBang()
}
// My class
class C extends B with A {}
new C().doTheBang; // Prints "boom"
现在唯一的问题剩下的,我怎么才能富来在C类的隐式范围内?
究竟是什么问题?如果你不希望'foo'隐含在'C'中,那么'C类扩展A和B'就可以。 –
A给了我一个foo,而B需要一个隐式定义。但是,因为他们有相同的名称,我不知道我可以如何指定A.foo的值到B.foo? – RoyB
C类中只有一个'foo'将A扩展为B',它的值为''ok“'。从“B”的角度来看,“foo”是隐含的。从“C”或“A”看,这并不是隐含的。 –