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

允我心安 提交于 2020-02-14 01:57:06

当定义一个类时,如果在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

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!