加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在scala中使用self =>进行混淆

发布时间:2020-12-16 19:08:21 所属栏目:安全 来源:网络整理
导读:一些 Scala API可以将这个自己别名,例如, trait Function1[-T1,+R] extends AnyRef { self = 我知道这个混叠是如何工作的,但是看不到Function1这样的特性如何受益.除了初始提及之外,Function1在其定义中的任何地方都不使用自己,所以这里的目的是什么? 以前
一些 Scala API可以将这个自己别名,例如,

trait Function1[-T1,+R] extends AnyRef { self =>

我知道这个混叠是如何工作的,但是看不到Function1这样的特性如何受益.除了初始提及之外,Function1在其定义中的任何地方都不使用自己,所以这里的目的是什么?

以前曾询问过此问题的变体,但答案并不直接适用.答案已经讨论过自己的类型和内部类,但是我看不到这里适用.

解决方法

见 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.

代码由Function0通过Function22生成.不知何故当你去功能5你开始看到self被使用:

self.apply(x1,x2,x3,x4,x5)).curried

所以我怀疑自己更容易=>始终包含在生成器模板中.

这是commit增加了自我参考.提交消息实际上解释了为什么它为n> = 5做不同的事情,我引用:

FunctionN,where N > 4,many fewer classes are created statically at the expense of creating more objects dynamically (which seems reasonable given how common such functions are likely to be). This also allows for curry in FunctionN for N > 8 without running into the filename length restriction.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读