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

Scala 产生元组的折叠(避免多次遍历输入),scala,fold,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(...) 只要fold的结果是一个元组,您就可以: scala> val (a,b,c) = Nil.f

我有一个列表,想用它来生成三个列表。我可以通过两个过滤器应用程序来实现这一点:

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(...)

只要fold的结果是一个元组,您就可以:

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

只要fold的结果是一个元组,您就可以:

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

@SergeyPassichenko,你所指的问题是关于在折叠参数中使用元组而不是在返回中使用元组。jaybee询问了这一问题,但后来删除了注释:)@SergeyPassichenko,你所指的问题是关于在折叠参数中而不是在返回中使用元组。jaybee询问了这一问题,但后来删除了注释:)