Scala 样例类
程序员文章站
2022-06-14 16:55:04
...
样例类使用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
上一篇: 2018-04-24 scala
下一篇: Scala _04Scala字符串