我正在通过一系列链接函数调用来构建一个值(所有结果都是 type B
):
val o: Option[String] = ...
val b: B = someFunc()
.map(func1)
.map(func2)
.map(/* want to apply func3 here if o.isDefined)
现在,我func3: (B, String) => B
只有在定义时才想应用它o
,在这种情况下,我还想将选项的值作为第二个参数传递给它。这相当于:
val tmp: B = someFunc()
.map(func1)
.map(func2)
val b = o.fold{b}{v => func3(tmp, v)}
但我不想打破调用链。有什么惯用的方法吗?