2013-05-08 15 views
9

Mam listę krotek i chcę odfiltrować wszystkie elementy gdzie druga wartość w krotce nie jest równa 7.Filtrowanie listę krotek

zrobić:

valuesAsList.filter(x=>x._2 != 7) 

Czy mogę używać symboli wieloznacznych, aby uczynić to jeszcze krótszym?

Dzięki.

+2

Czy próbowałeś? Gdziekolwiek zobaczysz 'x => ... x ...' zamień na '... _ ...' –

Odpowiedz

23

Można

valuesAsList.filter(_._2 != 7) 

Wątpię jednak powinno być preferowane nad przykład czy to (myślę czytelności):

valuesAsList.filter {case (_, v) => v != 7} 
+5

FWIW, zawsze napiszę 'filter (_._ 2! = 7)', nie którykolwiek z większych rzeczy clumsier. Nie dbam o 'v', tylko' _2! = 7'; wszystko inne rozprasza. '_' jest minimalnym rozproszeniem możliwym. –

+2

Drugi przypadek jest znacznie bardziej czytelny. – Ampers4nd

+0

Druga jest bardziej czytelna, ponieważ możesz nadać 'v' nazwę, która opisałaby to, co porównujesz z' 7'. – cevaris

2

Dość proste, bez realnej korzyści IMHO:

valuesAsList.filter(_._2 != 7) 
Powiązane problemy