scala case class

当你声明了一个 case class,Scala 编译器为你做了这些:

  • 创建 case class 和它的伴生 object

  • 实现了 apply 方法让你不需要通过 new 来创建类实例

  • 默认为主构造函数参数列表的所有参数前加 val
  • 添加天然的 hashCode、equals 和 toString 方法。由于 == 在 Scala 中总是代表 equals,所以 case class 实例总是可比较的
  • 生成一个 copy 方法以支持从实例 a 生成另一个实例 b,实例 b 可以指定构造函数参数与 a 一致或不一致
scala> val person = Person("xioaming","wang",2000)
person: Person = Person(xioaming,wang,2000)

scala> person.lastname
res0: String = xioaming

scala> person.lastname = "h"
<console>:12: error: reassignment to val
       person.lastname = "h"
                       ^
posted @ 2017-12-21 14:52  麻雀虽小五脏俱全  阅读(2311)  评论(0编辑  收藏  举报