語言技術:Scala Gossip

If I were to pick a language to use today other than Java, it would be Scala.
- James Gosling, creator of Java -

I can honestly say if someone had shown me the
Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy.
- James Strachan, creator of Groovy -

Scala 是一個可直譯、可編譯、靜態、可運行於 JVM 之上、可與 Java 互操作、融合物件導向編程特性與函式編程風格的程式語言。

文件基於 Scala 2.7.7 撰寫

起步走
        從一些簡單的語法開始,了解 Scala 的許多特性,所以就算是起步走,東西也夠多了。
  • 基本環境與指令
簡單的小程式可以使用 scala 指令,編譯的事就交給 scalac,編譯想快點就用 fsc。
  • 資料、變數、操作
所有的東西都是物件,所有的操作都是方法。
  • 內建控制結構
運算式有傳回值,迴圈沒有,對了!Scala 沒有 break 與 continue。
  • 函式、類別
先從一些簡單的自定義開始,更多的花樣在後頭。
  • 常用物件
在變與不變之間,先體會 Scala 更多的特性。


了解更多
        Scala 本身具有擴充性,不過這必須了解更多語法特性與細節。
  • 定義函式
函式語法看似繁多,但基本上從函式為一級(First-class)公民的出發點開始,就不會覺得複雜了。
  • 定義類別
Scala 建構式有些限制,使用方法可以定義所謂運算子(Operator),提供語法蜜糖與存取方法。
  • 使用繼承
Scala 的繼承作了一些限制,這使你在使用繼承前必須多一份思考。
  • 混入特徵(Trait)
特徵抽離共同的介面與實作,類別動態地繼承(extends)或具有(with)特徵。
  • 類別管理
東西別亂擺,方便別亂給,權限別亂設。
繼續深入
  • 模式比對(Pattern match)
還在寫 if..else 嗎?有些情況使用模式比對可以作的更好、更簡潔!
  • 提取器(Extractor)
更有彈性地運用模式比對的一種方式。
  • 進階型態
類別、特徵之外,還有更多的型態。。XD
  • 型態參數化(Type parameterization)
定義可參數化型態,讓 Scala 型態系統更有彈性。
  • 隱式轉換(Implicit conversion)
一切都是編譯器搞的鬼。。。XD
  • Scala 與 Java
站在巨人的肩膀上。。。XD



參考資料