2013-05-08 20 views
9

Ho una lista di tuple e voglio filtrare i tutti gli elementi in cui il secondo valore nella tupla non è uguale a 7.Filtrare una lista di tuple

faccio:

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

Posso usare la notazione con caratteri jolly per renderla ancora più corta?

Grazie.

+2

Hai provato? Ovunque vedi 'x => ... x ...' sostituisci con '... _ ...' –

risposta

23

Puoi

valuesAsList.filter(_._2 != 7) 

Ma dubito che dovrebbe essere preferito il tuo esempio o di questo (si pensi leggibilità):

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

FWIW, scriverò sempre 'filter (_._ 2! = 7)', non uno dei più grandi roba più roba. Non mi interessa per 'v', solo' _2! = 7'; tutto il resto distrae '_. è la minima distrazione possibile. –

+2

Il secondo caso è molto più leggibile. – Ampers4nd

+0

Secondo è più leggibile perché puoi dare a 'v' un nome, che descriverà ciò che stai confrontando con' 7' con. – cevaris

2

abbastanza semplice, senza un vero IMHO vantaggio:

valuesAsList.filter(_._2 != 7)