1

いくつかの暗黙的な値が定義されているスコープAと、それらの暗黙的な値を使用するコード ブロックcがあるとします。コード ブロックをにコピーすると、コンパイルして問題なく実行できるBように、互換性のある型の暗黙的なスコープもあります。もちろん、これは 2 つの場所で複製しているので醜いので、独自の関数に移動したいと思います。ここで、 の関数シグネチャは次のようになります。cBccc

def c(args...)(implicit implicitArgs...) = ...

implicitArgsで使用される暗黙の値はどこにありますかc。一部のフレームワーク (私の場合は Scalding) が多くの暗黙を定義していることを考えると、ここでの署名はすぐに手に負えなくなります。「呼び出しスコープですべての暗黙的な値を運ぶ」と言う構文はありますか? または、これを回避する賢い方法はありますか?

乾杯、ジェフ

4

2 に答える 2

0

「暗黙の引数をカレー化する」方法を見つけました:

def myfunc(arg:Something)(implicit session:Otherthing):Unit = ....

val curriedFunc = myfunc(value)(_:Otherthing)

curriedFunc(valueOfOtherThing)

詳細については、http://www.codecommit.com/blog/scala/function-currying-in-scalaでCurrying を使用しないパーシャルを参照してください。

: 私は Scala を初めて使用し、すべてのベスト プラクティスを知っているわけではありません。

于 2014-11-19T07:24:43.870 に答える