2013-01-04 3 views
1

저는리스트를 가지고 있으며 이것을 사용하여 세 개의리스트를 생성하려고합니다. 필터의 두 응용 프로그램을 사용하여이 작업을 수행 할 수 있습니다.배가 터플을 생성합니다 (입력의 다중 순회를 피함)

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

할 수 있습니다, 한 배의 결과는 튜플로 :

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

http://stackoverflow.com/questions/1701001/fold-list-of-tuples- in-scala-with-destructuring? rq = 1 –

+0

@SergeyPassichenko, 당신이 지적한 질문은 반환 안의 접는 인수에 튜플을 사용하는 것입니다. – pedrofurla

+0

제이비 (jaybee)가 그것에 대해 물어 보았지만 나중에 주석을 삭제합니다 :) –