是否存在语法糖来调用具有多个Top
类型的参数但没有任何默认值Option
的函数?
None
我想通过在调用def func1(param1: Option[String],
param2: Option[String]): String =
param1.getOrElse(param2.getOrElse("none"))
func1(None, None) // "none"
func1(Some("value1"), None) // "value1"
func1(Some("value1"), Some("value2")) // "value1"
func1(None, Some("value2")) // "value2"
时只给出一个参数,而不给其他任何"value2"
来获得func1()
的返回值。
None
我无法修改原始功能。我可以用其他功能包装它,但是首先要寻找已经可用的合成糖。
答案 0 :(得分:0)
只要您不能更改功能,那是不可能的。
但是,由于我们在scala中,因此您可以通过隐式转换添加一个适合您需求的方法。
让我们说这个类是在您的库中定义的:
class Foo {
def func1(param1: Option[String], param2: Option[String]): String =
param1 orElse param2 getOrElse "none"
}
您可以创建一个隐式类,以使用正确的签名添加您自己的函数。
implicit class FooOps(foo: Foo) {
def func1(param1: Option[String] = None, param2: Option[String] = None): String =
foo.func1(param1, param2)
}
现在可以根据需要调用该方法
scala> new Foo().func1()
res1: String = none