模式匹配(3) match 中的值,变量,类型

废话不多说,直接上代码讲解,如下代码示例:


  1. 对于上面代码,match表达式会有一个返回值,scala编译器会推断所有的case 子句的返回值类型的最近公共父类型(最小公共上限)作为返回值类型。
  2. match 匹配是顺序执行的,因此具体的子句应该出现在宽泛的子句之前。所以默认子句必须是最后一个case 子句。

match 匹配的陷阱 (变量的匹配)


解决办法可以是:对匹配的变量y 做特殊处理如图:


  1. 在case子句中,以小写字母开头的标识符被认为是用来提取待匹配值得新的变量。如果需要引入之前已经定义好的变量时,应使用反引号将其包围。
  2. 在case子句中,以大写字母开头的的标识符被认为是类型名称,或者是常量。