第九周 第5章 Scala高级特性
模式匹配
1 | 先看一下模式匹配 |
对变量的值进行模式匹配
1 | match case语法格式:变量 match { case 值 => 代码 } |
1 | def demo1(day: Int) { |
1 | 注意:match case中,只要一个case分支满足并处理了,就不会继续判断下一个case分支了,这一点与Java不同,java的switch case需要用break停止向下执行 |
变量类型的模式匹配
1 | Scala的模式匹配一个强大之处就在于,可以直接匹配类型,而不是值!!!这点是java的switch case绝对做不到的 |
1 | import java.io._ |
1 | scala> processException(new Exception()) |
1 | 在try-catch异常中的应用 |
case class与模式匹配
1 | Scala中提供了一种特殊的类,用 case class进行声明,中文可以称为样例类 |
1 | class Person |
1 | 执行 |

Option与模式匹配
1 | Scala有一种特殊的数据类型,叫做Option。 |
1 | val ages = Map("jack" -> 18, "tom" -> 30, "jessic" -> 27) |
1 | scala> getAge("jack") |
隐式转换
1 | Scala的隐式转换,允许手动指定将某种类型的对象转换成其它类型的对象 |
1 | Scala默认会自动使用两种隐式转换 |
1 | 如果隐式转换函数不在上述两种情况下的话,那么就必须手动使用import引入对应的隐式转换函数 |
案例:狗也能抓老鼠
1 | 通过隐式转换实现,狗也具备猫抓老鼠的功能 |
1 | scala> val d = new dog("d1") |
总结
1 | 1.主构造函数里的参数,要用var或val修饰;函数不用 |
