样本类:添加了case的类便是样本类。这种修饰符可以让Scala编译器自动为这个类添加一些语法上的便捷设定。如下:
1.添加与类名一致的工厂方法。也就是说,可以写成Var("x")来构造Var对象。
2.样本类参数列表中的所有参数隐式获得了val前缀,因此它被当作字段维护。
1.添加与类名一致的工厂方法。也就是说,可以写成Var("x")来构造Var对象。
2.样本类参数列表中的所有参数隐式获得了val前缀,因此它被当作字段维护。
3.编译器为这个类添加了方法toString,hashCode和equals等方法。
模式匹配:
一个模式匹配包含了一系列备选项,每个都开始于关键字case。每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式。
match表达式通过以代码编写的先后次序尝试每个模式来完成计算。类似于UnOp("-" , UnOp("-" , e))这种形式的,是构造器模式匹配。
match与switch的比较:匹配表达式可以被看作Java风格Switch的泛化。但有三点不同:
- match是Scala的表达式,始终以值作为结果;
- Scala的备选项表达式永远不会“掉到”下一个case;
- 如果没有模式匹配,MatchError异常会被抛出。这意味着必须始终确信所有的情况都考虑到了,或者至少添加一个默认情况什么都不做。如 case _ =>