1. 程式人生 > >Scala 樣例類

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