Scala 樣例類
阿新 • • 發佈:2018-12-25
樣例類使用case class 類名(引數名:引數型別)來宣告。可以用來模式匹配。
樣例類的特性:
1. 在伴生物件中提供apply方法,初始化時可以不用new
case class Calc(name:String)
val sum = Calc("sum")
2. 預設實現了toString、equal、hashCode和copy方法
case class Calc(name:String)
val sum = Calc("sum")
println(sum)
結果:
Calc(sum)
普通類的toString
case Calc(name:String )
val sum = new Calc("sum")
println(sum)
結果:
com.scalatest.Calc@4e1d422d
3. 構造器中的每一個引數都成為val,除非顯示宣告為var
4. case class建構函式的引數是public級別的,我們可以直接訪問
val sum = Calc("sum")
sum.name
5. 提供unapply方法,支援模式匹配
class Calc()
case class Sum(name:String="sum") extends Calc
case class Avg(name:String="avg" ) extends Calc
def calculate (calc: Calc) {
calc match {
case s:Sum =>
println(s.name)
case a:Avg =>
println(a.name)
case _ =>
println("other")
}
}
calculate(Sum())
calculate(Avg())
結果:
sum
avg