生成元组的折叠(避免多次遍历输入)

时间:2013-01-04 15:28:09

标签: scala fold

我有一个列表,想要使用它来生成三个列表。我可以使用两个过滤器应用程序:

val z_out = zs.filter(p1)
val z_in = zs.filter(p2)
val z_split = zs.diff(z_out union z_in)

我可以通过一次遍历列表来执行此操作吗?如:

val (z_out, z_in, z_split) = zs.foldLeft(...)

1 个答案:

答案 0 :(得分:1)

只要折叠的结果是一个元组,你就可以:

scala> val (a,b,c) = Nil.foldLeft((1,2,3))((x,y) => x)
a: Int = 1
b: Int = 2
c: Int = 3