// 样例类里定义field,并由Scala在编译时自动提供getter和setter方法,但是样例类里没有method
// 样例类的属性默认为val(可以设为var】)
// 样例类自带伴生对象,并且有apply()方法,该方法用来生成样例类对象
def main(args:Array[String]): Unit ={
class Person
case class Teacher(var name: String, subject: String) extends Person //不建议使用var
case class Student(name: String, classroom: String) extends Person
val p:Person=Teacher("Ta","Math")
//val p:Person=Student("Sa","Classroom1")
p match {
case Teacher(name, subject) => println("Teacher:" + name + ", " + subject)
case Student(name, classroom) => println("Student:" + name + ", " + classroom)
case _ => println("Illegal access, please go out of the school!")
}
}
----Option类型----------------------------
// Option是Scala中的一种特殊类型,Option有两种值:一种是Some,表示有值;一种是None,表示没有值
//Option通常会用于模式匹配中,判断某个变量是有值,还是没有值,比null更好用(null可以继续使用)
//Some和None是Option的样例类(查看源码)
val grades = Map("Leo" -> "A", "Jack" -> "B", "Jen" -> "C")
val grade = grades.get("Leo1")
grade match {
case Some(grade) => println("your grade is " + grade)
case None => println("Sorry, your grade information is not in the system")
}
-----------
val map = Map("a" -> "100")
println(map("a"))
println(map.get("a")) //返回值为some(100)
println(map.get("a").get)