Scala 一切都是物件!在此老魚不將其 Type 翻作“型別”或叫“型態”, 是因為它們在 Scala 中全都是以“實例(Instance)”及其異變實例形式存在, 而非像 Java 是同時擁有非 OO 的基本型別及其外覆類別(Primitive Types and Wrapper Classes)與靜態(Static)等複雜化風格. - WisdomFish.ORG 相較於 Java相較於 Java, Scala 不存在原始型別(Primitive Types), 是一個純物件導向(OO)語言, 但效能並不因此而劣於 Java, 其主要的特性如下:
類型推論Scala 不是動態語言, 而是一個嚴肅的靜態語言, 為了高效能需要明確的進行值類型分類, 你可以在下列多個例子中看到結果, Scala 預設採用 類型推論(Type Inference) 或稱推演/推斷 來主動協助你判定的值類型, 但您仍可明確地顯式宣告值類型. scala> 1 res2: Int = 1 1 以 scala.Int 實例存在, 若無法滿足 Int 方法調用時, 會自行調用 intWrapper() 轉型為 scala.runtime.RichInt 來調用更多方法. scala> 1L res9: Long = 1 scala> 1.0F res8: Float = 1.0 scala> 1.0f res8: Float = 1.0 scala> 1.0 res5: Double = 1.0 scala> 1. res5: Double = 1.0 scala> .4 res30: Double = 0.4 scala> 's' res7: Char = s scala> '\u0041' res32: Char = A scala> true res24: Boolean = true scala> false res25: Boolean = false scala> val x: BigInt = 20 x: BigInt = 20 顯式宣告Scala 相同其它靜態語言, 由你親自來為其指定值類型, 一但被顯式的指明, 給予的值相對也不可超出指定值類型的值範圍. scala> val fish: Short = 1 fish: Short = 1 scala> val fish: Byte = 1 fish: Byte = 1 scala> val fish: Byte = 1.0 <console>:4: error: type mismatch; found : Double(1.0) required: Byte val fish: Byte = 1.0 ^ BigDecimal & BigIntScala 對於大浮點數與大整數, 採以和 JVM / .NET CLR 掛勾方式操作, 但一般開發者可以不須了解其內部運作, 僅依你原本方式來直接使用這二者即可.
Package scala.runtime._
Type 轉型 |
C05.入門與語法(Syntax) >