0

私は別の暗黙的な値に依存している暗黙的な値を持っています。2番目がスコープ内にあるときに、最初の暗黙的なものをインポートしたい:

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()    
}

これはどういうわけか可能ですか?

4

1 に答える 1

2

あなたの定義ではprovideAnA、暗黙的な変数を作成します。この変数はスコープ外でmyMethあり、不要でもあります。から値を返すだけprovideAnAで動作するはずです。したがって、provideAnAメソッドは次のようになります。

implicit def provideAnA(implicit b:B) = new A{}

また、への呼び出しからかっこを削除する必要がありますmyMeth。そうしないと、コンパイラはパラメーターなしで呼び出しを試み、そのための impl を見つけられないためです。

于 2013-06-12T09:35:12.107 に答える