对scala占位符_的理解

你好,我对_有个疑问,你能帮忙解答一下吗?
如下例:
val list = List(1,2,3)
val list2 = List(3,4,5)
list.filter(list2.contains(_))
val list = List((1,1),(2,2),(3,3))
list.filter(list2.contains(_._2))
第一次filter就是成功的,第二次就提示失败,添加x =>才可以,这是为什么呢?

wangxiaolei

赞同来自:

你第二次正确的写法是什么?

wangxiaolei

赞同来自:

 _ 只能代替某一个参数,或是集合中的某一个元素,不能代表多个。 就像你的举例,需要用到匿名函数,不能使用_代替。  

fish - Hadooper

赞同来自:

因为编译器无法识别占位符的类型,list2.contains(_._2)无法如预期执行。

要回复问题请先登录注册