Scala2.8预览——值得期待
程序员文章站
2022-07-13 09:19:29
...
Scala在2.7.4之后的下一个重要版本将会是2.8。相对以前的版本,该版本将作出飞跃性的改进:包括一些期盼已久的特性,一些重大的修改和增添。
Scala2.8中包含的特性:
1.重新设计的集合框架。
Scala的集合类的层次结构被重新设计,以更加规范,易用,高效。将会有一份白皮书阐述该设计。用户大部分已有的代码不会受到影响,但是那些对集合类的实现代码,比如sequence,set,map,etc.需要修改以适应新的集合框架。
2.命名参数与默认参数。
方法的参数能够通过参数名传递,并且参数能具有默认值。
3.Package object。
现在不仅可以在源文件中定义package,而且可以使用一些特殊的object来定义package,该object内列出的成员属于该package。譬如,你可以在这样的object中添加一些类型别名(type alias),这些类型别名将作为该package的成员从而可见。新的集合框架中使用该功能以保证向后兼容性。比如,List类在新的库中位于scala.collection.immutable package中,而之前是位于scala package中。通过定义如下的package object使得之前使用List的代码在新的集合框架中任然可用:
4. 增强的Scala Swing库。
scala.swing包中将增添一些新的功能,并且将具有更好的文档说明。
5.Support for continuations.
A compiler plugin will support continuations as an optional feature of Scala, using a type-directed continuation passing transform. Continuations are useful to implement advanced control constructs, for instance for asynchronous I/O, user interface event handling, or dataflow concurrency.
6.类型特殊化。
引入一个使用于类型参数的annotation:@specialize。该annotation能够针对泛型代码中的基本类型生成特殊的代码,这样可以避免昂贵的boxing 和 unboxing操作,以显著提高代码的执行速度。
7.改善的REPL。
Scala的交互命令控制台添加了一些新的功能,特别的命令完成功能将可以使用。
8.Packrat parser combinators
Scala's combinator parser library will be upgraded to "packrat parsing". This helps efficiency and also permits more grammar styles to be expressed as parsers. For instance, left-recursive productions can now be handled.
之前版本中大部分被标为deprecated的类与方法在2.8中将被去除,并且不再支持Java1.4。class文件的格式会发生改变,因此Scala2.8与之前版本二进制文件不兼容。但很大程度上保持了源代码兼容性。
按照计划,Scala2.8的第一个beta版将在6月初发布。只有6个多星期了,期待吧!
Scala2.8中包含的特性:
1.重新设计的集合框架。
Scala的集合类的层次结构被重新设计,以更加规范,易用,高效。将会有一份白皮书阐述该设计。用户大部分已有的代码不会受到影响,但是那些对集合类的实现代码,比如sequence,set,map,etc.需要修改以适应新的集合框架。
2.命名参数与默认参数。
方法的参数能够通过参数名传递,并且参数能具有默认值。
3.Package object。
现在不仅可以在源文件中定义package,而且可以使用一些特殊的object来定义package,该object内列出的成员属于该package。譬如,你可以在这样的object中添加一些类型别名(type alias),这些类型别名将作为该package的成员从而可见。新的集合框架中使用该功能以保证向后兼容性。比如,List类在新的库中位于scala.collection.immutable package中,而之前是位于scala package中。通过定义如下的package object使得之前使用List的代码在新的集合框架中任然可用:
package object scala { type List[+A] = scala.collection.immutable.List[A] val List = scala.collection.immutable.List ... }
4. 增强的Scala Swing库。
scala.swing包中将增添一些新的功能,并且将具有更好的文档说明。
5.Support for continuations.
A compiler plugin will support continuations as an optional feature of Scala, using a type-directed continuation passing transform. Continuations are useful to implement advanced control constructs, for instance for asynchronous I/O, user interface event handling, or dataflow concurrency.
6.类型特殊化。
引入一个使用于类型参数的annotation:@specialize。该annotation能够针对泛型代码中的基本类型生成特殊的代码,这样可以避免昂贵的boxing 和 unboxing操作,以显著提高代码的执行速度。
7.改善的REPL。
Scala的交互命令控制台添加了一些新的功能,特别的命令完成功能将可以使用。
8.Packrat parser combinators
Scala's combinator parser library will be upgraded to "packrat parsing". This helps efficiency and also permits more grammar styles to be expressed as parsers. For instance, left-recursive productions can now be handled.
之前版本中大部分被标为deprecated的类与方法在2.8中将被去除,并且不再支持Java1.4。class文件的格式会发生改变,因此Scala2.8与之前版本二进制文件不兼容。但很大程度上保持了源代码兼容性。
按照计划,Scala2.8的第一个beta版将在6月初发布。只有6个多星期了,期待吧!