2010-02-05 14 views
11

E 'possibile assegnare membri di tupla in parallelo in Scala. se no, esiste un'altra tecnica per realizzare qualcosa di simile?Scala: assegnazione parallela di tuple

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

se non lo sapessi puoi usare la notazione a mano corta: players.partition (_. Punteggio> 50) – Schildmeijer

risposta

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

Assignes il (List, List) tupla di due variabili. Se si desidera decomprimere la tupla è necessario utilizzare

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

che fa esattamente quello che vuoi. :-)

+0

Eccellente grazie Malax;) –

+0

+1 per indicare cosa significa la sintassi senza parentesi. O meglio, se potessi assegnare un ulteriore voto, lo farei. :-) –

+0

Ti suggerisco, tuttavia, di sottolineare che l'assegnazione della tupla funziona perché in realtà è una corrispondenza di pattern. –