前言 : Scala 是一個可直譯、可編譯、靜態、可運行於 JVM 之上、可與 Java 互操作、融合物件導向編程特性與函式編程風格的程式語言. 從一些簡單的語法開始,了解 Scala 的許多特性,所以就算是起步走,東西也夠多了. 簡單的小程式可以使用 scala 指令,編譯的事就交給 scalac,編譯想快點就用 fsc. (Scala 官網), 所有的東西都是物件,所有的操作都是方法.
資料型態 :
在 Scala 中,一切都是物件,即使是一個整數也是物件 :
Int 實際上是 scala 套件(package)中的類別,Scala 會自動 import 該套件下的類 別,Byte、Short、Int、Long、Char、Float、Double、Boolean 等都位於 scala 套件中,在 JVM 上運行時,它們對 應於 Java 中的byte、short、int、long、char、float、double、boolean 等基本型態(Primitive type),有著與 Java 中基本資料型態相同的範圍.
Scala 也重用一些Java中的類別,例如字串,在上面的示範中可以看到,Scala 直接重用了 java.lang.String 類別(Scala 也會自動 import 套件java.lang).如果你在程式中直接寫一個整數,則預設是十進位的 Int 整數,你可以用 0 開頭表示這是個八進位整數,用 0x 開頭表示這是個十六進位整數,以 L 或l結尾時,表示這會是個 Long 整數 :
如果你直接撰寫一個浮點數,則預設會是個 Double,加上 F 或 f 可以指定其為 Float,你也可以使用 科學記數 來表示浮點數 :
字元是以單引號包裹住,也可以指定 Unicode 編碼 :
以 \ 作開頭為跳脫字元,如以上指定Unicode編碼是其中一例,你還可以有以下的字元指定方式 :
在 Scala 中,若要取得整數、浮點數等的數值範圍,則可以參考下面範例(在 Java 中則是定義在各自的包裹物件上,如 Integer、Double 等),例如 :
在 Scala 中,如整數、浮點數等基本的型態,可以直接作一些操作,例如:
事實上,abs、max、round 等都是物件上的方法(在 Scala 中, 方法如果不帶引數或只帶一個引數,則括號可以省略),但並非 Int、Double 上的方法,在 Scala 中,如果發現某個方法不屬於某物件,則會嘗試看看 是否有定義的隱式轉換(Implicit conversion),在這邊的例子中,由於 Scala 為這些基本的資料型態定義了一些富包裹器(Rich Wrapper),當必要時,會嘗試將數值以富包裹器包裹,看看是否可以執行所指定的方法,例如 abs、max 其實是 scala.runtime.RichInt 上的方法,round 其實是scala.runtime.RichDouble 上的方法 :
下表列出了基本型態與富包裹器的對應 :
補充說明 :
* Tutorialspoint - Scala Data Types
沒有留言:
張貼留言