说到scala的强大,case关键字当然功不可没。
它可以用作模式匹配
eg:
import scala.language.postfixOps
object fun2{
def main(args: Array[String]): Unit = {
val model: Seq[(String, Int)] = ("Jack"->19)::("Bucy"->20)::("Bob"->22)::("Nacy"->18)::Nil
model foreach{
case (name,age)=> println(name+":"+age)
case _ =>println("don't match!")
}
}
}
result:
Jack:19
Bucy:20
Bob:22
Nacy:18
case也可以使用在类class前面声明为case class
class之前添加case可以自动生成equal、hashcode、toString、copy方法 和他的半生对象,并且为半生对象生成apply、unapply方法。
eg:
import scala.language.postfixOps
case class ForFun(name:String)
object fun2{
def main(args: Array[String]): Unit = {
val forfun = ForFun.apply("Jack")
println(forfun.name)
val forFun2 = new ForFun("Nacy")
println(forFun2.name+":"+forFun2.hashCode()+":"+forFun2.toString)
println(forfun equals forFun2)
}
}
结果如下:
Jack
Nacy:-1811736370:ForFun(Nacy)
false