この場合、クラスを考えてみましょう:新しい暗黙の値として暗黙のパラメータに渡された明示的な値を使用して
case class IntPrinter(implicit val i: Int) {
def print()(implicit i: Int) = println(i)
}
私はインスタンスすることができ、それが明示的にこのような暗黙の引数の値を渡す:
val p = IntPrinter()(9)
私は」 IRCでは、今から明示的に渡された値が呼び出されると明示的に渡された値が暗黙のうちにプリントに渡されると言われていますが、それはそうではありません:
p.print()
error: could not find implicit value for parameter i: Int
私は何か間違っているのですか、私は誤解していますか、間違った情報を与えられていますか?これを達成する方法はありますか?
EDIT:それは期待どおりに動作実際の問題として私はこのようなp._
をインポートする場合:確かに9
を印刷し
import p._
p.print()
。
これは正しい動作ですか? import
を悪い考えとして使用していますか?これを回避するにはどうすればよいですか?
インポートすることを理由 '(
printProxy
がIntPrinter
の範囲内にあるので。) p._'は、 'caseクラスのIntPrinter(暗黙のval i:Int)'から 'i'を単にスコープに入れているためです。しかし、...私はすでにクラスの中で "範囲内"です。あなたはそれにアクセスするために特別なことを行う必要はありません。 – Destin