我試圖區分兩個數組。具體來說,我有一個數組與一些字符串,另一個索引,我想從第一個數組清理。起初,我試圖用「_」來使用匿名函數註釋,但它不起作用,而且我很難理解爲什麼。 下面是一個例子:Scala中的匿名函數,錯誤取決於表示法
val a1 = Array("word1","word2","word3")
val ind = Array(1,2)
val a2 = a1.zip(a1.indices)
val not_working = a2.filterNot(ind.contains(_._2))
> console>:15: error: missing parameter type for expanded function
> ((x$1) => x$1._2)
> a2.filterNot(ind.contains(_._2))
> ^<console>:15: error: type mismatch;
> found : Boolean required: ((String, Int)) => Boolean
> a2.filterNot(ind.contains(_._2))
我的假設是,_對應於,例如,( 「字詞1」,0)或( 「單詞2」,1)元組。但我不明白這個錯誤,爲什麼它會在這裏得到布爾類型?我雖然會得到元組的第二部分。
只是爲了它,我試圖更明確地重寫它,它的工作。下面是一個例子,做什麼,我想到的,我天真的眼睛,它看起來像我改變的僅僅是符號:
val working = a2.filterNot(x => ind.contains(x._2))
我有很難理解兩個例子之間的差異。爲什麼第二個工作?