假设这种情况:
我的Tuple
大小为 n 。
每个元素都是一个Boolean
标志,用于定义是否应在对象(此处为builder
)上调用特定功能。
首先想到的语法是:
(el1, el2, el3, ...) => {
val builder = MyBuilder()
val builder1 = if(el1) builder.func1(...) else builder
val builder2 = if(el2) builder1.func2(...) else builder1
val builder3 = if(el3) builder2.func3(...) else builder2
...
}
最后一个生成器builderN
将是所需的对象。但是这段代码很讨厌。
什么是好的,干净的选择? (注意:我正在使用cats
。)
代表我的问题的另一种方式是:
val result = MyBuilder.
.func1(...) //ONLY if el1!
.func2(...) //ONLY if el2!
.func3(...) //ONLY if el3!
....
.funcn(...) //ONLY if el4!
编辑:固定示例代码!
答案 0 :(得分:5)
您可以将标记列表与构建函数列表一起压缩,然后在折叠中有条件地应用构建器函数
func1
func3
打印到控制台:
{{1}}