use*_*541 10 alias scala this self
例如,一些Scala API 将此别名为self
trait Function1[-T1, +R] extends AnyRef { self =>
Run Code Online (Sandbox Code Playgroud)
我知道这种混叠一般是如何工作的,但是看不出像Function1这样的特性如何从中受益.除了最初的提及,Function1 在其定义中的任何地方都不使用self,那么它的目的是什么呢?
之前已经问过这个问题的变体,但答案并不直接适用.答案已经讨论过自我类型和内部类,但我不知道这是如何适用的.
huy*_*hjl 10
见https://github.com/scala/scala/blob/2.10.1/src/library/scala/Function1.scala#L8在那里说
// GENERATED CODE: DO NOT EDIT. See scala.Function0 for timestamp.
Run Code Online (Sandbox Code Playgroud)
该代码是由对于相同的发生器产生Function0通过Function22.不知何故,当Function5你开始看到self被使用时:
self.apply(x1, x2, x3, x4, x5)).curried
Run Code Online (Sandbox Code Playgroud)
所以我怀疑它self =>总是包含在生成器模板中更容易.
这是添加自引用的提交.提交消息实际上解释了为什么它为n> = 5做了不同的事情,我引用:
FunctionN,其中N> 4,静态创建更少的类,代价是动态创建更多对象(考虑到这些函数可能有多常见,这似乎是合理的).这也允许功能N中的咖喱N> 8,而不会遇到文件名长度限制.