鍍金池/ 教程/ Scala/ Scala Case類和對象
Scala方法重載
Scala模式匹配
Scala throw關鍵字
Scala提取器
Scala概述
Scala throws關鍵字
Scala finally塊
Scala正則表達式
Scala循環(huán)語句
Scala多線程
Scala函數
Scala final關鍵字
Scala方法覆蓋
Scala字符串
Scala線程實現
Scala異常處理
Scala類和對象
Scala數據類型
Scala單例和伴生對象
Scala構造函數
Scala教程
Scala Case類和對象
Scala繼承
Scala開發(fā)環(huán)境安裝配置
Scala運算符
Scala文件I/O
Scala線程方法
Scala變量
Scala try-catch語句
Scala基礎語法
Scala集合
Scala數組
Scala閉包
Scala訪問修辭符
Scala this關鍵字

Scala Case類和對象

Scala Case類只是常規(guī)類,默認情況下是不可變的,可通過模式匹配可分解。

它使用相等(equal)方法在結構上比較實例。它不使用new關鍵字實例化對象。

默認情況下,case類中列出的所有參數默認使用publicimmutable修辭符。

語法

case class className(parameters)

Scala Case類示例

case class CaseClass(a:Int, b:Int)  

object Demo{  
    def main(args:Array[String]){  
        var c =  CaseClass(10,10)       // Creating object of case class  
        println("a = "+c.a)               // Accessing elements of case class  
        println("b = "+c.b)  
    }  
}

將上面代碼保存到源文件:Demo.scala中,使用以下命令編譯并執(zhí)行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
a = 10
b = 10

Case類支持模式匹配。 所以,可以在模式中使用它。以下是Case類和模式的示例。

Scala Case類和模式匹配示例

沒有參數的case類將被聲明為case對象而不是case類。 默認情況下,case對象是可序列化的。

trait SuperTrait  
case class CaseClass1(a:Int,b:Int) extends SuperTrait  
case class CaseClass2(a:Int) extends SuperTrait         // Case class  
case object CaseObject extends SuperTrait               // Case object  
object Demo{  
    def main(args:Array[String]){  
        callCase(CaseClass1(10,10))  
        callCase(CaseClass2(10))  
        callCase(CaseObject)  
    }  
    def callCase(f:SuperTrait) = f match{  
        case CaseClass1(f,g)=>println("a = "+f+" b ="+g)  
        case CaseClass2(f)=>println("a = "+f)  
        case CaseObject=>println("No Argument")  
    }  
}

將上面代碼保存到源文件:Demo.scala中,使用以下命令編譯并執(zhí)行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
a = 10 b =10
a = 10
No Argument