Scala2.8預覽——值得期待
[size=large] [b]Scala2.8中包含的特性:[/b][/size]
[b][color=blue]1.重新設計的集合框架。[/color][/b]
Scala的集合類的層次結構被重新設計,以更加規範,易用,高效。將會有一份白皮書闡述該設計。使用者大部分已有的程式碼不會受到影響,但是那些對集合類的實現程式碼,比如sequence,set,map,etc.需要修改以適應新的集合框架。
[b][color=red]2.命名引數與預設引數。[/color][/b]
方法的引數能夠通過引數名傳遞,並且引數能具有預設值。
[b][color=blue]3.Package object。[/color][/b]
現在不僅可以在原始檔中定義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
...
}
[b][color=blue]4. 增強的Scala Swing庫。[/color][/b]
scala.swing包中將增添一些新的功能,並且將具有更好的文件說明。
[b][color=blue]5. continuations的支援。[/color][/b]
一個編譯器外掛將做為Scala的附屬特性來支援continuations。這是通過一個型別引導的continuation傳遞轉換來完成的。Continuation對於諸如非同步I/O,UI事件處理以及資料流併發之類的高階控制建造十分有幫助。
[b][color=blue]6.型別特殊化。[/color][/b]
引入一個使用於型別引數的annotation:@specialize。該annotation能夠針對泛型程式碼中的基本型別生成特殊的程式碼,這樣可以避免昂貴的boxing 和 unboxing操作,以顯著提高程式碼的執行速度。
[b][color=blue]7.改善的REPL。[/color][/b]
Scala的互動命令控制檯添加了一些新的功能,特別的命令完成功能將可以使用。
[b][color=blue]8.Packrat parser combinators[/color] [/b]
Scala的解析合併器庫將升級至“packrat解析”。這對於效率有很大幫助,並且允許更多語法格式被表達為解析子(parser)。
之前版本中大部分被標為deprecated的類與方法在2.8中將被去除,並且不再支援Java1.4。class檔案的格式會發生改變,因此Scala2.8與之前版本二進位制檔案不相容。但很大程度上保持了原始碼相容性。
按照計劃,Scala2.8的第一個beta版將在6月初發布。只有6個多星期了,期待吧!