如何在scala中使用来自多个选项的构建器

时间:2015-10-22 15:49:37

标签: scala immutability

我在Scala代码中使用Java库并且必须使用一些构建器:

val buildResult = new Builder()
  .withPropertyA(a)
  .withPropertyB(b)
  .withPropertyC(c)
  .build()

如果bOptioncOptionOption括号bc并且不想要方法withPropertyB和{{如果相应的值为withPropertyC,则调用{1}}。

这样做的惯用方法是什么?

1 个答案:

答案 0 :(得分:1)

Fluent接口,尤其是Java接口,通常依赖于变异,所以惯用的方法是将它包装在纯接口中。

但是,您可以(ab)使用就地突变来执行以下操作:

val builder = new Builder()
bOption.foreach(builder.withPropertyB)
cOption.foreach(builder.withPropertyC)
val buildResult = builder.build()