Scala 2.8 Beta 1 发布

  • Mirko Stocker
  • 张龙

2010 年 1 月 27 日

话题:JavaRuby编程语言ScalaJVMIDE语言 & 开发架构

今天,万众期待的Scala 2.8 Beta1终于发布了。

相比于 2.7.7 版,新版本修复了大量 bug,同时增加了很多新特性。该 Beta 版将成为几个月后发布的 2.8.0 正式版的基础。

小版本号的增长(相对于 2.7.7 来说)并不能恰当地反映出语言所发生的巨大变化。但遗憾的是,Scala 2.8 并没有做到与 2.7 分支的二进制兼容。

该版本的一些新特性列举如下(请查看发布声明以了解全部新特性):

重新设计的集合库

Scala 的集合库经历了翻天覆地的变化——全部重新设计。现在不仅可以更加轻松地实现新的集合,用户还会享受到这么做的各种好处(几乎完全向后兼容),正如 Daniel Sobral 在Scala-User 邮件列表中所述:

Scala 2.7 无法做到从一个“Map”中返回另一个“Map”,而这应是必备的功能。为了能够实现类似的功能点,我们才重新设计了 Scala 2.8 的集合库。

大家可以访问Scala 站点以深入了解新的集合库。

具名(Named)与默认参数

Scala 2.8 还增加了新的语言特性,如新的具名与默认参数。具名参数就好像是给被调方法的形式参数名赋值一样,如下代码片段所示:

def resize(width: Int = 800, height: Int = 600) = { ... }
resize(width = 120, height = 42)

具名与默认参数经常搭配使用,我们可以根据参数名称为参数赋值,同时对其他参数使用默认值,如下代码片段所示:

resize(height = 42) 

这些创新还被应用到了另一个新特性当中: case class 具有一个 copy 方法,其参数默认为当前值。借助于具名参数,我们可以有选择地修改被拷贝实例的值,请参看 Scala 站点以深入了解该主题。

改进的交互式解释器

Scala 的交互式解释器现在变得越来越强大了,可以通过 tab 键实现包名、类名和成员的自动完成功能。该特性使用到了反射,不仅可以用于 Scala 代码,还适用于 Java。请参看Arjan Blokzijl 的博文以深入了解该特性。

改进的 Eclipse 插件

新版 Scala Eclipse 插件将随同 Scala 2.8 一起发布。其与 JDT 的集成获得了极大的改进;新的构建管理器使得代码编辑变得更加快速,可靠性也更好。Scala Eclipse 插件的主力开发者 Miles Sabin 详细(PDF)介绍了去年所进行的工作。

InfoQ 还采访了Miles以深入了解该 IDE 的当前状况和未来发展。该 IDE 将支持 Scala 2.8,但还会支持 Scala 2.7 么?

目前该 IDE 是链接到编译器上的... 所有 IDE 都是通过编译器实现语法感知特性的。除了 2.8 以外,我们可以适当降低两者间的依赖来支持多个版本,但遗憾的是并不能支持更早的版本。这里我推荐大家使用单独的 Eclipse 从事 2.7 和 2.8 的开发工作。

最近有消息称 Scala IDE 将具有独立的发布计划,这么做的意图是什么呢?

随着 2.8 版的发布,IDE 的基础将更加牢固。现在正是快速发展的时期,我们需要拥有比 Scala 更快的发布周期。

关于 IDE 的未来,你有什么规划呢?

我的目标是让 Scala IDE 变得像 Java IDE 那么棒。尽管还有不少路要走,但我们相信这是可以实现的。
当 2.8 正式版发布时,我希望能够有一个面向该 IDE 的 Web 资源库,它将承载随后版本发布的相关信息,搜集关于 IDE 现有但零散的文档与资源,最终成为用户和贡献者的交流中心。

当然了,支持 2.8 的 IDE 不是只有 Eclipse 一个,NetBeansIntelliJ也在开发自己的工具。

Scala Days 2010

4 月 15—16 日,众多的 Scala 爱好者将齐聚 Scala 诞生地——瑞士洛桑的 EPFL 来庆祝首届Scala Days,“交互意见并实现业务往来,同时探索关于 Scala 语言的最新实践和理论上的开发点”。

下载 Scala 2.8 Beta,别忘了报告 bug 和问题以便我们在正式版发布前将其消灭掉,正式版将于几个月之后发布。

查看英文原文:Scala 2.8 Beta 1 Released

JavaRuby编程语言ScalaJVMIDE语言 & 开发架构