我有一个语句,目前看起来像这样:
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'i
都ui
通过替换 使用新标识符下划线,e'
结果来自e
将每个下划线部分ui
替换为u'i
。
重点是我的 - 它在两个相关部分中明确指出假设保留的顺序。
就个人而言,我认为强制执行是有意义的,如果"仅"出于可读性原因。