2013-05-08 94 views
9

我有一個元組列表,我想篩選出的所有元素,其中的元組的第二個值不等於7過濾元組的列表

我做的:

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

我可以使用通配符表示使其更短嗎?

謝謝。

+2

你試過了嗎?無論你在哪裏看到'x => ... x ...'替換爲'... _ ...' – 2013-05-08 21:03:08

回答

23

您可以

valuesAsList.filter(_._2 != 7) 

但我懷疑它應該優先於你的榜樣或本(認爲可讀性):

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

FWIW,我總是會寫'filter(_._ 2!= 7)',而不是任何更大的笨拙的東西。我不在乎'v',只是'_2!= 7';其他一切都會分散注意力。 '_.'是可能的最小分心。 – 2013-05-08 21:04:53

+2

第二種情況更具可讀性。 – Ampers4nd 2014-06-25 14:09:46

+0

其次是更具可讀性,因爲你可以給'v'一個名字,這個名字將描述你正在與'7'進行比較。 – cevaris 2017-04-05 18:07:20

2

相當直截了當,沒有真正的優勢,恕我直言:

valuesAsList.filter(_._2 != 7)