我有以下方法
def myMethod(val overrideValue: Option[Boolean] = None): Int = {
val myValue = overridenValue.getOrElse(getDefautValue())
// do something else
}
如果我想使用默认值,我会这样调用方法
myMethod()
如果要覆盖该值,则调用类似myMethod(Some(true))
或myMethod(Some(false))
这样的方法。
有没有一种更好的方法可以忽略Some(..)
答案 0 :(得分:2)
我认为保存灵活性的更好方法是使用方法重载:
def myMethod: Int = {
myMethod(getDefautValue())
}
def myMethod(argumentFlag: Boolean): Int = {
// to do something with argumentFlag
}
def getDefautValue: Boolean = ???
在这里您可以覆盖getDefautValue,并且不需要将布尔参数包装到Option
中。但是,如果布尔值可以为null
,则可能会遇到一些问题。