Scala Case Classes 和 Case Object
Scala case classes是普通类,它们默认是不可变的并且可以通过模式匹配进行分解。
它使用equal方法进行结构化的实例比较。它不使用new关键字来实例化对象。
在case类中列出的所有参数默认都是公共的和不可变的。
语法
case class className(parameters)
Scala Case Class示例
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
案例类支持模式匹配。所以,你可以在模式中使用它。以下是案例类和模式的例子。
Scala Case Classes和模式匹配例子
一个没有参数的案例类被声明为案例对象,而不是案例类。 案例对象默认是可序列化的。
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")
}
}
输出:
a = 10 b =10
a = 10
No Argument