2012-10-22 63 views
2

這裏試圖將一個List類型的元組轉換爲一個序列元組並重新賦值結果。將列表[Tuple2 [A,B]]轉換爲Tuple2 [Seq [A],Seq [B]]

val items = repo.foo.list // gives me a List[(A,B)] 

我可以拉斷多任務,像這樣:

val(a,b) = (items.map(_._1).toSeq, items.map(_._2).toSeq) 

,但它會更好在1步做,沿着線:

val(a,b) = repo.foo.list.map{case(a,b) => (a,b)} 

回答

6

我不是當然如果我正確地理解了這個問題。也許unzip適用於你想要的?

下面是一些例子鏈接:http://daily-scala.blogspot.de/2010/03/unzip.html

+0

+1是,不斷地忘記一個;-)現在,如何轉換爲SEQ所有1操作(查看更新後的問題) – virtualeyes

+0

但是'repo.foo.list.unzip'沒有辦法嗎? – Eduardo

+0

是的,當時正在詢問轉換爲Seq(解壓縮給我一個列表)。儘管如此,編譯器似乎無聲無息地將List轉換爲需要Seq的方法 – virtualeyes

0

因爲你可以看看product-collections一個更一般的情況。一個CollSeqN既是Seq[TupleN[A1..An]]TupleN[Seq[A1..An]]

在您的例子,你可以提取Seqs像這樣:

items._1 
items._2 
... 
相關問題