我定义为一个函数:斯卡拉如何使用默认设置,而不重新定义他们
def par(min: Int = -1, exact: Int = -1, auto: Boolean = false) = {
require(min > 0 || exact > 0 || auto, "Invalid argument")
OpPar(drm, minSplits = min, exactSplits = exact)
}
在使用这个我在选项中传为par
PARAMS另一个函数。我想允许par
使用它自己的默认值,但没有看到如何在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
。使用复杂的逻辑,我可以根据哪个Option
params为nonEmpty
为minPar
和exactPar
来决定调用par
的哪个版本,但这是相当丑陋的,并且对于每个带有默认参数的函数都必须以不同的方式写入。这种情况几乎发生在每个Scala lib。如果他们更改默认值,但我没有注意到,我的代码将会中断。
上面的例子说明了这个问题,但我正在寻找一个涵盖每个的情况,其中一个函数具有可能会改变的默认值的Scala成语。我想编写独立于lib函数中默认参数更改的代码。
您可以为每个默认值使用一个常量,即'val MinParDefault = -1'。然后,你可以在'minPar.getOrElse(MinParDefault)'中使用它。 –
我无法更改'par'函数,它在一个lib中。 – pferrel
我的错误 - 我的意思是'minPar'等。 –