首页 > 解决方案 > 有没有更好的方法将可选参数传递给 Scala 中的方法?

问题描述

我有以下方法

def myMethod(val overrideValue: Option[Boolean] = None): Int = {
    val myValue = overridenValue.getOrElse(getDefautValue())
    // do something else
}

如果我想使用默认值,我会调用这样的方法 myMethod()

如果我想覆盖该值,我会调用这样的方法myMethod(Some(true))myMethod(Some(false)).

有没有更好的方法可以省略Some(..)

标签: scala

解决方案


我认为保存灵活性的更好方法是使用方法重载:

def myMethod: Int = {
  myMethod(getDefautValue())
}

def myMethod(argumentFlag: Boolean): Int = {
    // to do something with argumentFlag
}

def getDefautValue: Boolean = ???

在这里您可以覆盖 getDefautValue,并且不需要将布尔参数包装到Option. 但是,如果您的布尔值可以是 ,您可能会遇到一些问题null


推荐阅读