05 2013 档案

Scala中的语言特性是如何实现的(2)
摘要:上篇博文的末尾留了三个问题,现在自问自答一下。在Scala中被声明为val的v4为什么在反编译的Java中不是final的呢?在方法中声明局部变量时,如果用Scala的val关键字(或者是Java中的final)来修饰变量,则代表着此变量在赋过初始值之后不可以再被重新赋值。这个val或者final只是给编译器用的,编译器如果发现你给此变量重新赋值会抛出错误。而bytecode不具备表达一个局部变量是immutable的能力,也就是说对于JVM来说,不存在不可变的局部变量这个概念。所以v4在反编译之后,就和普通的局部变量无异了。在Scala中被声明为val的v2为什么在反编译的C#中不是read 阅读全文

posted @ 2013-05-19 15:12 崔鹏飞 阅读(1107) 评论(8) 推荐(1) 编辑

Scala中的语言特性是如何实现的(1)
摘要:Scala可以编译为Java bytecode和CIL,从而在JVM和CLI之上运行。Scala有很多在Java和C#的世界中显得陌生的语言特性,本文将分析这些语言特性是如何实现的。objectScala中可以像这样创建object:12345object HowIsObjectImplementedInScala { def printSomething() { println("printSomething") }}然后在代码的其他地方调用printSomething,一个object究竟是什么东西呢? 我们将这段Scala编译为Java bytecode,然后反编译为 阅读全文

posted @ 2013-05-09 22:38 崔鹏飞 阅读(1123) 评论(0) 推荐(1) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示