を再定義せずにデフォルトを使用します。私はpar
がそれ自身のデフォルトを使用することを許可したいが、Scala(醜いロジックなし)でそれを行う方法を見ないので、実際にはこのようなデフォルトを再定義しなければならない。Scalaはどのように私のように定義された機能を持っている彼らに
drmARaw.par(
min = minPar.getOrElse(-1),// if par changes this may the be wrong default
exact = exactPar.getOrElse(-1),// if par changes this may the be wrong default
auto = autoPar.getOrElse(true))
デフォルトは今までにこれを変更した場合はmin
とexact
に間違ったデフォルト値を渡します。複雑なロジックを使用して、par
のバージョンをOption
のパラメータがnonEmpty
のminPar
とexactPar
のどちらに基づいて呼び出すかを決めることができますが、これはかなり醜いですし、デフォルトのパラメータを持つ関数ごとに異なる方法で記述する必要があります。この状況は、ほぼすべてのScalaライブラリで発生します。彼らがデフォルトを変更して気付かない場合、私のコードは壊れてしまいます。
上記の例では問題が説明されていますが、のすべてのケースを対象とするScalaイディオムを探しています。関数のデフォルトが変更される可能性があります。私は、lib関数のデフォルトのparamの変更とは無関係なコードを書いています。
それぞれのデフォルト値、つまり 'val MinParDefault = -1'に定数を使うことができます。そして、あなたは 'minPar.getOrElse(MinParDefault)'でそれを使うことができます。 –
私は 'par'関数を変更できません。libにあります。 – pferrel
私の間違い - 私は 'minPar'などを意味しました。 –