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



我有一个语句,目前看起来像这样:

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

用下面来表达会很棒,但这是不可能的,因为 foldLeft 被设计为首先接受种子参数:

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

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

附言copyTo返回此示例中的下一个偏移量。

SLS似乎说"不"。

部分 6.23, 匿名函数/匿名函数的占位符语法

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

如果表达式e绑定下划线部分u1 , . . . , un,则按此顺序,它等效于匿名函数(u'1 , ... u'n ) => e'其中每个u'iui通过替换 使用新标识符下划线,e'结果来自e将每个下划线部分ui替换为u'i

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

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

最新更新