我有一个隐含的值,这取决于另一个隐含的值。当第二个在作用域中时,我想导入第一个隐式:
trait B
trait A
implicit def provideAnA(implicit b:B) = {
implicit val a = new A{}
}
def myMeth(implicit a:A) = 42
{
implicit val implB = new B{}
// i would like to be able to pass this through compiler
myMeth()
}这是不是有可能呢?
发布于 2013-06-12 17:35:12
在provideAnA的定义中,您创建了一个隐式变量。这个变量不在myMeth的作用域内,也是不必要的。只需从provideAnA返回值,它就会正常工作。因此,您的provideAnA方法应该如下所示:
implicit def provideAnA(implicit b:B) = new A{}此外,您还必须从对myMeth的调用中删除括号,否则编译器会尝试在不带参数的情况下调用它,并且找不到对应的impl。
https://stackoverflow.com/questions/17061965
复制相似问题