Scala:向序列添加项或有条件地合并序列

Scala:向序列添加项或有条件地合并序列,scala,scala-collections,seq,Scala,Scala Collections,Seq,我需要根据条件向Seq添加一个项目 我唯一能做的就是: if(condition){ part1 ++ part2 ++ Seq(newItem) } else { part1 ++ part2 } part1和part2是Seq[String]。 它可以工作,但是有很多重复的代码。有没有办法做得更好? 谢谢在您的情况下,第三部分可以是选项al: val part3 = if (condition) Some(newItem) else None part1 ++ part2 ++

我需要根据条件向
Seq
添加一个项目

我唯一能做的就是:

if(condition){
    part1 ++ part2 ++ Seq(newItem)
}
else {
  part1 ++ part2
}
part1
part2
Seq[String]
。 它可以工作,但是有很多重复的代码。有没有办法做得更好?
谢谢

在您的情况下,第三部分可以是
选项
al:

val part3 = if (condition) Some(newItem) else None
part1 ++ part2 ++ part3
例如:

scala> Seq(1,2,3) ++ Seq(4,5) ++ Option(6)
res0: Seq[Int] = List(1, 2, 3, 4, 5, 6)

这里隐式转换正在发挥作用。

part1++part2++Some(newItem)。过滤器(=>condition)
还要考虑if-else表达式上的
Seq.empty
,如下所示

part1 ++ part2 ++ (if (condition) Seq(newItem) else Seq.empty)
比如说

Seq("a") ++ Seq("b") ++ (if (true) Seq("c") else Seq.empty)
List(a, b, c)

Seq("a") ++ Seq("b") ++ (if (false) Seq("c") else Seq.empty)
List(a, b)