假设:
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.前三条“给定”代码行不能改变(如果不是已经清楚了:))
非常感谢
答案 0 :(得分:4)
x.flatMap(f).getOrElse(Default)