当值为None或函数的结果为None时,重复getOrElse

时间:2015-07-05 01:12:03

标签: scala

假设:

val x = Option(1) // or None
def f(p: Int) = Option("a") // or None
val Default = "b"

此代码:

x.map(i => f(i).getOrElse(Default)).getOrElse(Default)

按设计工作。

有没有办法避免重复代码中的getOrElse(Default)?规则:1。代码比上面更短,或者至少更清晰/更易读,2。只运行f一次,然后3.前三条“给定”代码行不能改变(如果不是已经清楚了:))

非常感谢

1 个答案:

答案 0 :(得分:4)

x.flatMap(f).getOrElse(Default)