2010-02-05 43 views
11

是否可以在Scala中並行分配元組成員。如果不是有另一種技術來完成類似的東西?Scala:元組的並行賦值

val players = List(
    new Player("Django Reinhardt", 42), 
    new Player("Sol Hoopii", 57), 
    new Player("Marc Ribot", 64) 
) 

val winners, losers = players.partition(p => p.score > 50) 

// winners = List(Player name:Sol Hoopii score: 57, Player name:Marc Ribot score: 64) 
// losers = List(Player name:Django Reinhardt score: 42) 
+0

如果你不知道你可以使用簡短的表示法:players.partition(_。score> 50) – Schildmeijer 2010-02-05 16:52:40

回答

20
val winners, losers = players.partition(p => p.score > 50) 

Assignes的(列表,列表)元組的兩個變量。如果你想解開元組,你必須使用

val (winners, losers) = players.partition(p => p.score > 50) 

這正是你想要的。 :-)

+0

非常感謝Malax;) – 2010-02-05 14:50:03

+0

+1用於指出沒有括號的語法意味着什麼。或者,相反,如果我可以授予一個額外的投票,我會的。 :-) – 2010-02-05 15:58:44

+0

不過,我建議你也指出元組賦值的工作原理,因爲它實際上是一種模式匹配。 – 2010-02-05 16:00:09