斯卡拉强调解释

时间:2016-06-02 10:25:56

标签: scala functional-programming tuples

看一下这些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))

2 个答案:

答案 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不接受两个函数的元组。