2010-02-05 17 views
11

Czy można przypisać krotki równolegle w Scali. jeśli nie jest inna technika, aby osiągnąć coś podobnego? przycisk (Lista, Lista)Scala: Równoległe przypisywanie krotek

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

jeśli nie wiesz, że możesz użyć skrótu notacji: players.partition (_. Score> 50) – Schildmeijer

Odpowiedz

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

Assignes krotka do dwóch zmiennych. Jeśli chcesz rozpakować krotkę, musisz użyć

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

Który robi dokładnie to, co chcesz. :-)

+0

Doskonałe dzięki Malax;) –

+0

+1 za wskazanie, co oznacza składnia bez nawiasów. Lub raczej, jeśli mógłbym przyznać jeszcze jeden dodatkowy głos, zrobiłbym to. :-) –

+0

Sugeruję jednak, abyś zwrócił uwagę, że przypisanie krotki działa, ponieważ jest to właściwie dopasowanie do wzorca. –