在Scala中惰性地合并选项
我有几种方法计算一个值,以减少偏好在Scala中惰性地合并选项,scala,lazy-evaluation,scala-option,coalescing,Scala,Lazy Evaluation,Scala Option,Coalescing,我有几种方法计算一个值,以减少偏好 firstWay() second() + way() orA(thirdWay()) 每个选项都返回一个选项。我想“合并”这些,并得到一个选项,其中第一个部分返回的值,或者无如果全部返回无 当然,如果firstWay() 做这件事最惯用的方法是什么(或者至少是合理可读的) firstWay().orElse(second() + way()).orElse(orA(thirdWay())) orElse的参数被延迟计算 请参阅。如果您有足够的方法使Kar
firstWay()
second() + way()
orA(thirdWay())
每个选项都返回一个选项
。我想“合并”这些,并得到一个选项
,其中第一个部分返回的值,或者无如果全部返回无
当然,如果firstWay()
做这件事最惯用的方法是什么(或者至少是合理可读的)
firstWay().orElse(second() + way()).orElse(orA(thirdWay()))
orElse
的参数被延迟计算
请参阅。如果您有足够的方法使Karol的答案变得难以理解,或者您事先不知道有多少:
val options: Stream[Option[A]] = ...
// in the example: firstWay() #:: (second() + way()) #:: orA(thirdWay())
options.foldLeft[Option[A]](None)(_.orElse(_))