1、代码
package com.yy.base
//关键字sealed--密封的
//将所有extends Person2的case class 都得列出来
sealed abstract class Person2
case class Student2(name:String,sno:Int) extends Person2
case class Teacher2(name:String,tno:Int) extends Person2
object SealedClassAndOption extends App {
val p:Person2 = Student2("yy",2015)
//下面的代码会爆match may not be exhaustive. It would fail on the following input: Teacher2(_, _)
p match{
case Student2(name,sno) => println(name + " is a student.")
}
//下面才是正确的:将所有extends Person2的case class 都得列出来
p match{
case Student2(name,sno) => println(name + " is a student.")
case Teacher2(name,tno) => println(name + " is a techaer.")
}
/**
* Option是一个sealed abstract class
* 它下面包含两个类:Some和None
* m.get(key)返回一个Option类型对象,因此需要列出Some和None
*/
val m = Map("name"->"yy","age"->26)
m.get("age") match{
case Some(age) => println("age is : " + age)
case scala.None => println("Not Matched")
}
}
2、结果
yy is a student.
yy is a student.
age is : 26