Scala 樣例類

樣例類使用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

6. 默認是可以序列化的,也就是實現了Serializable

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章