2010-02-05 17 views
11

Es posible asignar miembros de tupla en paralelo en Scala. si no, ¿hay otra técnica para lograr algo similar?Scala: asignación paralela de Tuples

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

si no sabía que puede usar la notación abreviada: players.partition (_. Score> 50) – Schildmeijer

Respuesta

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

Assignes la (Lista, Lista) tupla con dos variables. Si desea desempaquetar la tupla, debe usar

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

Que hace exactamente lo que usted desea. :-)

+0

Excelente gracias Malax;) –

+0

+1 para señalar lo que significa la sintaxis sin paréntesis. O, mejor dicho, si pudiera otorgar un voto adicional, lo haría. :-) –

+0

Sugiero, sin embargo, que también señale que la asignación de tupla funciona porque en realidad es una coincidencia de patrón. –

Cuestiones relacionadas