Pau*_*per 7 scala lazy-evaluation coalescing scala-option
我有几种计算价值的方法,优先级递减.
firstWay()
second() + way()
orA(thirdWay())
Run Code Online (Sandbox Code Playgroud)
每个都返回一个Option
.我想"合并"这些并获得第一个Option
返回的值Some
,或者None
如果全部返回None
.
当然,如果firstWay()
返回a Some
,我不应该计算其余的.
什么是最惯用(或至少是合理可读)的方式?
Kar*_*l S 11
firstWay().orElse(second() + way()).orElse(orA(thirdWay()))
Run Code Online (Sandbox Code Playgroud)
orElse
这个论点被懒惰地评估了.
请参阅文档.