Scala学习笔记-08-样例类case 类

当定义一个类时,如果在class关键字前加上case关键字,则该类称为case类。

case类是一种特殊的类,它们经过优化以被用于模式匹配

Scala为case类自动重载了许多实用的方法,包括toString、equals和hashcode方法。

Scala为每一个case类自动生成一个伴生对象,其包括模板代码

  • 一个apply方法,因此,实例化case类的时候无需使用new关键字
  • 一个unapply方法,该方法包含一个类型为伴生类的参数,返回的结果是Option类型,对应的类型参数是N元组,N是伴生类中主构造器参数的个数。Unapply方法用于对对象进行解构操作
    • 在case类模式匹配中,该方法被自动调用,并将待匹配的对象作为参数传递给它

 

// 假设 定义一个case class:
scala> case class Car(brand:String, price:Int) defined class Car //则 编译器自动生成伴生对象: scala> object Car{ | def apply(brand:String,price:Int) = new Car(brand,price) | def unapply(c:Car):Option[(String,Int)] = Some((c.brand,c.price)) | } defined object Car

 

你可能感兴趣的:(Scala学习笔记-08-样例类case 类)