是否有可能影响'_'lambda参数的排序方式?

时间:2014-02-27 12:59:15

标签: scala syntax

我的声明目前看起来像这样:

arrays.foldLeft(0)((offset, array) => array.copyTo(largerArray, offset))

将它表达如下是很好的,但这是不可能的,因为foldLeft旨在首先采用种子参数:

arrays.foldLeft(0)(_.copyTo(largerArray, _))

这纯粹是肤浅的 - 我只是好奇!

P.S。 copyTo返回此示例中的下一个偏移量。

1 个答案:

答案 0 :(得分:3)

The SLS似乎说“不”。

第6.23节,匿名函数的匿名函数/占位符语法

  

表达式(句法类别Expr)可能包含嵌入式   在标识符合法的地方下划线符号_。这样的   表达式表示匿名函数,其中后续   下划线的出现表示连续参数。

  

如果,表达式e会将下划线部分u1 , . . . , un按此顺序绑定,则它等同于匿名函数(u'1 , ... u'n ) => e'每个u'i的结果来自ui,取代了e'   使用新标识符和e的{​​{1}}结果加下划线   将每个下划线部分ui替换为u'i

重点是我的 - 它在两个相关部分明确指出假定保留顺序。

就个人而言,我认为如果出于可读性的原因,“仅”是强制执行的。