【发布时间】:2016-03-08 19:14:30
【问题描述】:
我正在尝试区分两个数组。具体来说,我有一个带有一些字符串的数组,另一个带有我想从第一个数组中清除的索引。起初我尝试使用带有“_”的匿名函数注释,但它不起作用,我很难理解为什么。 这是一个例子:
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) )
我的假设是 _ 对应于例如 ("word1",0) 或 ("word2",1) 元组。但我不明白错误,为什么它在这里得到布尔类型?我虽然它会得到元组的第二部分。
为了它,我尝试更明确地重写它,并且它起作用了。这是一个符合我期望的示例,在我天真的眼里,我唯一改变的就是符号:
val working = a2.filterNot( x => ind.contains(x._2) )
我很难理解两个示例之间的区别。为什么第二个有效?
【问题讨论】: