case 声明类的好处
- 创建 case class 和它的伴生 object
- 实现了 apply 方法让你不需要通过 new 来创建类实例
- 默认为主构造函数参数列表的所有参数前加 val
- 添加天然的 hashCode、equals 和 toString 方法。由于 == 在 Scala 中总是代表 equals,所以 case class 实例总是可比较的
- case 进行模式匹配,一旦匹配成功即返回。
下面的三个操作效果是等价的
val p0 = new Person("json", 29, "Blue") // normal constructor
val p1 = Person("json", 29, "Blue") // this uses apply
val p2 = Person.apply("json", 29, "Blue") // using apply manually