Scala case类和case对象用法详细示例

Scala case类只是常规类, 默认情况下是不可变的, 可通过模式匹配将其分解。
它使用均等方法在结构上比较实例。它不使用new关键字实例化对象。
case类中列出的所有参数都是公共的, 默认情况下是不可变的。
句法

case class className(parameters)

Scala case类示例
case class CaseClass(a:Int, b:Int)object MainObject{ 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) } }

输出
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 MainObject{ 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") } }

【Scala case类和case对象用法详细示例】输出
a = 10 b =10 a = 10 No Argument

    推荐阅读