lambda在Scala中如何工作,它们是否在匿名类之上运行?
标题可能有点令人困惑,所以让我详细说明,我一直在阅读一些关于
Scala的批评.这是一封发送给Tyepsafe的电子邮件,内容是关于Scala从
Coda Hale (Yammer’s Infrastructure Architect)开始的一些不足之处,所以引用:
所以,从这一点来看,我有几个关于lambda如何在Scala中工作的问题: >自由函数和绑定到匿名类的函数之间的区别是什么(技术上,并非所有函数都绑定到主单例对象)? 解决方法
是的,lambdas仍然是对象,匿名类的实例.
这就是JVM的工作原理,所有引用都是对象.你可以有引用或值(原语),但没有办法解决它. Java的更高版本具有MethodHandles.但值得注意的是,MethodHandle仍然只是一个抽象类 – 尽管JVM特别知道如何在运行时优化. 另外值得注意的是,JVM通常可以对抽象类(例如Scala的函数)执行转义分析,并对它们进行优化. 除此之外,Scala可以使用带有apply方法的任何对象,就像它是一个Function一样.在这种情况下,显式调用apply将在字节码中发出,而您不再处理匿名类. 鉴于上述所有内容,不可能对Scala函数实现的性能做出一般性陈述,这取决于您的特定代码/用例.一般情况下,我不会担心,除非你碰到一个角落案例,你的探查器在这里指出了一个问题(这是非常不可能的) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- twitter-bootstrap – 内联形式的输入宽度 – Bootstrap 4
- Controller中错误 TypeError: $rootScope.$broadcast is no
- angularjs – 链接函数中的Angular $compile给出错误“Rang
- scala – 为什么自我类型可以声明类
- 如何使用Scala读取Play-Framework中的Cookie值?
- crontab 配置文件
- 角度2:组件交互,可选输入参数
- linux定时任务出现command not found解决办法
- jersy restful webservice快速入门Demo(带pom文件)
- unix – 为什么使用`clone`创建进程会导致内存不足?