看一下这些scala片段: 如果我们有这样的事情:
List(List(1, 2), List(3, 4), List(5)) map (x => (x.size))
我们可以将其缩短为:
List(List(1, 2), List(3, 4), List(5)) map ((_.size))
但是,如果我们有这样的事情:
List(List(1, 2), List(3, 4), List(5)) map (x => (x.size, x.size))
为什么我们不能将它缩短为:
List(List(1, 2), List(3, 4), List(5)) map ((_.size, _.size))
答案 0 :(得分:5)
占位符的数量应等于函数参数的数量。在您的情况下,map
有1个参数,这就是您不能使用两个占位符的原因。
答案 1 :(得分:2)
因为List(List(1, 2), List(3, 4), List(5)) map ((_.size, _.size))
具有不同的含义,即
List(List(1, 2), List(3, 4), List(5)) map ((x => x.size, y => y.size))
(您可以从错误消息中看到这一点)。这显然无法编译,因为map
不接受两个函数的元组。