参考链接:
scala case class
https://www.jianshu.com/p/f24ef623646f
case class
Scala 支持 case classes 记法。
Case Class 就是普通的类, 除了:默认不可变、可以通过模式匹配拆分、通过结构相等比较而非通过引用比较、易于实例化和操作。
当一个类被定为case class 时,scala会默认做如下工作:
(1)如果参数不加var/val修改,默认为val;
(2)自动创建伴生对象并实现apply方法,这样创建对象时不用写new,因为只要写上类名就会自动调用它的构造方法;
(3)默认实现toString、hashCode、copy和equals方法;
(4)默认是可以序列化的;
(5)自动从scala.Product中继承一些函数;
(6)case class构造函数的参数是public级别的,我们可以直接访问;
(7)做模式匹配
def printTerm(term:Term) {
term match{
caseVar(n) => print(n)
caseFun(x, b) => print("^"+ x + ".")
printTerm(b)
caseApp(f, v) => print(")")
}
}