Scala-可选参数,无需用户输入Some(...)

问题描述 投票:-2回答:3

我正在设计程序。我是Scala的新手,但似乎使用以下命令处理了可选参数:

def f1(my_string: Option[String] = None) = {

// Maybe do some pattern matching here to extract the value

}

但是,对于最终用户来说,这很丑陋,因为他们将需要像这样调用此函数:

f1(Some("foo")

是否有一种技术或模式可以将其转换为:

f1("foo"))

并且仍然可以使用可选参数吗?即f1()也可以吗?

我问的原因是,我显然使用了Scala库,在该库中不需要添加显式的Some(..),但是在它们的源代码中,它们已经定义了上述功能。我个人会使用默认参数,但会徘徊为什么这是一种设计模式。

scala error-handling functional-programming pattern-matching options
3个回答
2
投票

代替Option,您可以重载该方法。

f1() :ReturnType = {...}

f1(arg:String) :ReturnType = {...}

2
投票

诸如此类的呼叫中Option的语法成本>

f1(Some("foo"))
与大型代码库中的空指针异常的最小风险值相比,[[是微不足道的。图灵奖得主Hoare,appologised

我称之为我十亿美元的错误。这是零的发明 参考于1965年。

0
投票
一种选择是为此类参数创建帮助器类

only

© www.soinside.com 2019 - 2024. All rights reserved.