码迷,mamicode.com
首页 > 其他好文 > 详细

scala 样例类

时间:2018-08-26 16:42:59      阅读:450      评论:0      收藏:0      [点我收藏+]

标签:color   rgs   bsp   array   创建对象   jason   class   函数   com   

一.case class 的特征

package com.jason.qianfeng

case class Message(sender: String, receiver: String, body: String)

object CaseClassTest {
  def main(args: Array[String]): Unit = {
    println("==case class 的比较")
    val mes = Message("jason", "wus", "starbuck")
    val mes2 = Message("jason", "wus", "starbuck")
    println(s"mes : ${mes.toString}")
    println(s"mes2 : ${mes2.toString}")
    println(s" mes == mes2 ? :${mes == mes2}")
    println("==case class copy 方法")
    val mes3 = mes.copy()
    println(s"mes == mes3 ? : ${mes == mes3}")
    println(s"==case class 部分copy")
    val mes4 = mes.copy(sender = "fan")
    println(s"mes: ${mes.toString}")
    println(s"mes4: ${mes4.toString}")
  }
}

运行结果如下:

==case class 的比较
mes : Message(jason,wus,starbuck)
mes2 : Message(jason,wus,starbuck)
 mes == mes2 ? :true
==case class copy 方法
mes == mes3 ? : true
==case class 部分copy
mes: Message(jason,wus,starbuck)
mes4: Message(fan,wus,starbuck)

总结:

1.case class 默认实现了apply 方法,所以可以用val mes = Message("jason", "wus", "starbuck") 方法来创建对象

2.case class 重写了toString方法,

3.case class 主构造函数中的参数默认是 public val修饰的

4.case class 的比较是基于值的,并不是引用地址的比较

5.case class 的copy 可以实现部分copy,例如

 val mes4 = mes.copy(sender = "fan") 

mes4 的 sender 被赋值为“fan” ,其他值沿用mes的值

 

scala 样例类

标签:color   rgs   bsp   array   创建对象   jason   class   函数   com   

原文地址:https://www.cnblogs.com/jason-dong/p/9536786.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!