上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.6 结语
本章介绍了Scala类和对象的基础,并向你展示了如何编译和运行应用程序。在下一章,你将会了解到更多关于Scala基础类型和用法的内容。
[1]参数采用val的原因是val更容易推敲,不需要像var那样进一步查证val是不是被重新赋值过。
[2]我们在这里用了一个缓存来展示带有字段的实例对象。类似这样的缓存是以牺牲内存换取计算时间的方式来提升性能的。通常来说,只有当你遇到缓存能解决的性能问题时才会用到这样的缓存,并且你可能会用一个弱引用的映射,比如scala.collection.mutable的WeakHaskMap,以便内存吃紧时,缓存中的条目可以被垃圾回收掉。
[3]由于new关键字仅被用于实例化类,这里创建的对象是ChecksumAccumulator类的实例,而不是相同名字的那个单例对象。
[4]合成类的名称为对象名加上美元符。因此,名为ChecksumAccumulator的单例对象的合成类就是ChecksumAccumulator$。
[5]如果你是Java程序员,可以把这句引入语句当作是Java 5的静态引入(static import)功能。Scala跟Java静态引入的区别在于可以从任何对象引入成员,而不仅仅是从单例对象。
[6]scala用来“解释”一个Scala源文件的实际机制是它会先把Scala源代码变异成Java字节码,然后马上通过类加载器加载,并执行它们。