变量和val的Scala内部
发布时间:2020-12-16 18:24:57 所属栏目:安全 来源:网络整理
导读:Scala中var和val的内部实现是什么?有兴趣知道他们的实现的细节 – 是什么使var变为“var”如何实现可变结构vs val(更像是最终的)结构,这使得它是不可变的. 解决方法 我将通过示例回答,使用 scalac 和 javap . 首先,我创建Test.scala: class Test { val x =
Scala中var和val的内部实现是什么?有兴趣知道他们的实现的细节 – 是什么使var变为“var”如何实现可变结构vs val(更像是最终的)结构,这使得它是不可变的.
解决方法
我将通过示例回答,使用
scalac 和
javap .
首先,我创建Test.scala: class Test { val x = 1 var y = 2 } 通过scalac Test.scala编译它来生成Test.class,然后使用javap -p Test.class来获取 public class Test { private final int x; private int y; public int x(); public int y(); public void y_$eq(int); public Test(); } 因此,您可以看到val x成为类中的私有final字段,也是返回该值的公共final方法. var y成为非最终私有字段和getter setter对. y_ $eq(int)是setter.在scala中,这将是def y _ =(newY:Int):Unit. Scala的语法糖会将y = someValue转换为对y _ =(someValue)的调用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- CORS AngularJS不使用POST或DELETE发送Cookie /凭
- shell – 从与Applescript相同的文件夹中运行PKG
- yum [Errno 14] problem making ssl connection
- angular – 无法读取未定义的’xxx’的属性
- [译] 你真的知道 Angular 单向数据流吗
- Scala – 中缀和点符号
- $(...).modal is not a function
- 我如何在vim中快速添加像“==========”这样的行
- webservice接口返回异常soapenv:Server.userExce
- 如何在subscribe Angular 4中返回值
热点阅读