Scala 控制结构内部揭密

来源:互联网 发布:常微分方程数值解 知乎 编辑:程序博客网 时间:2024/05/21 17:11
Scala 是专为 Java™ 平台编写的,因此其语法设计会使 Java 代码编码人员感觉很轻松。同时,Scala 为 JVM 提供了函数语言的固有的强大功能,并以这些函数设计概念为出发点。在这一期的 面向 Java 开发人员的 Scala 指南系列 文章中,Ted Neward 将介绍两种语言之间的细微差异,从一些控制结构(比如 ifwhilefor)开始介绍。正如您将要学习到的那样,Scala 为这些结构提供了一些在其 Java 等效物中无法获得的功能和复杂性。

迄今为止,在此 系列 中,我们已经讨论了 Scala 对生态环境的保真度,展示了 Scala 如何将众多的 Java 核心对象功能合并在一起。如果 Scala 只是编写对象的另一种方式,那么它不会有任何引人注意的地方,或者说不再那么功能强大。Scala 的函数概念和对象概念的合并,以及它对编程人员效率的重视,这些使得学习 Scala 语言比 Java-cum-Scala 编程人员所想象的体验更加复杂、更加微妙。

关于本系列

Ted Neward 潜心研究 Scala 编程语言,并带您跟他一起徜徉。在这个新的 developerWorks 系列 中,您将深入了解 Scala,并在实践中看到 Scala 的语言功能。在进行相关比较时,Scala 代码和 Java 代码将放在一起展示,但(您将发现)Scala 中的许多内容与您在 Java 编程中发现的任何内容都没有直接关联,而这正是 Scala 的魅力所在!毕竟,如果 Java 代码可以做到的话,又何必学习 Scala 呢?

例如,对控制结构(比如 ifwhilefor)使用 Scala 的方法。尽管这些控制结构看起来类似一些老的、还比较不错的 Java 结构,但实际上 Scala 为它们增加了一些完全不同的特性。本月的文章是关于使用 Scala 控制结构时能够期望获得哪些东西的入门级读物,而不是在制造许多错误(并编写一堆错误代码)之后,让您冒着遭受挫折的风险去寻找差异。

修订后的 Person.scala

在 本系列的上一篇文章 中,可以了解到 Scala 能够通过定义一些方法来定义 POJO,这些方法模仿基于 POJO 的环境所需的传统 “getter 和 setter”。在这篇文章发表之后,我收到了 Bill Venners 发来的电子邮件,Bill Venners 是即将发表的正式的 Scala 参考资料使用 Scala 编程(请参阅 参考资料)的合著者之一。Bill 指出了实现上述操作的一个更简单的方法,即使用 scala.reflect.BeanProperty 标注,如下所示:

 

 

本文转自IBM Developerworks中国

        请点击此处查看全文