沒有人天生對一項新語言能在短期中成為專家, 萬丈高樓平地起, 虛心謙卑地把自己歸零來學習它, 而非自滿的誇耀自已的精通能力~WisdomFish
老魚我把自己的"挫折"學習心得留給各位來自 Java 的開發者:
萬般皆物件
- 數值是物件, 故身上帶有許多相關的運算與其運算“符”, 所以連運算符都是方法.
- 函數也是物件,
單例物件取代靜態成員- Scala 中不存在靜態成員宣告, 無關鍵字 'static'.
- 單例物件:一個俱唯一性的實例(Instance), 這個類別級的宣告, 在首次被執行時進行唯一性實例化.
- Java 在 class 中以宣告 main( ) 來做為程序的起點, 在 Scala 中制約的要求在類別層級將此宣告為單例物件, 冠以關鍵字 'object' 來替代 Java 中的關鍵字 'class'.
- main( ) 不返回值 (故它是一個 procedure method)
Compiling & Running - $ javac -> $ scalac
- $ java -> $ scala
import Java APIs - * 星號, 在 Scala 被視為有意義的方法標誌符用, 故在 Scala 中使用 _ 下劃線替代之.
import java.lang._
- import ApiName._
Class
- Scala 的 Root classe: scala.Any
- Scala 的類別宣告可以帶有參數, 並在實例化時進行參數的傳遞
- 繼承與Override
- 泛型標誌符由 <RefClassName> 變更為 [ ]
Interface -> Trait - Trait 的目標用來取代 Java interface, 但較為豐富的可以有非抽像的實作code, 可以用來當樣版或者以“組合”的概念, 來進行專案設計
- 抽象方法不需冠以 abstract 關鍵字
|
|