learning scala Case Classses

package com.aura.scala.day01

object caseClasses {
  def main(args: Array[String]): Unit = {
    // 注意在实例化案例类时,并没有使用关键字new, 这是因为案例类有一个默认的apply
    // 方法来负责对象的创建。
    val frankenstein = Book("978-0486282114")
    println(frankenstein.isbn)
    val message1 = Message("panzidong", "lianghong", "come on")
    println(message1.body,message1.recipient,message1.sender)
    // 案例类的比较是按值而非按引用比较

    val message2 = Message("panzidong", "lianghong", "come on")
    val message3 = Message("panzidong", "lianghong", "come on")
    println(message2 == message3)
    // 案例类的拷贝

    val message4 = Message("panzidong", "lianghong", "come on")
    val message5 = message4.copy(sender = message4.recipient, recipient = "11111")
    println(message5.sender, message5.recipient, message5.body)

  }
  case class Book(isbn: String)
  case class Message(sender: String, recipient: String,body: String)
}

resule:

"D:Program FilesJavajdk1.8.0_201injava.exe" "-javaagent:D:Program FilesJetBrainsIntelliJ IDEA 2019.1.3libidea_rt.jar=5581:D:Program FilesJetBrainsIntelliJ IDEA 2019.1.3in" -Dfile.encoding=UTF-8 -classpath "D:Program FilesJavajdk1.8.0_201jrelibcharsets.jar;D:Program FilesJavajdk1.8.0_201jrelibdeploy.jar;D:Program FilesJavajdk1.8.0_201jrelibextaccess-bridge-64.jar;D:Program FilesJavajdk1.8.0_201jrelibextcldrdata.jar;D:Program FilesJavajdk1.8.0_201jrelibextdnsns.jar;D:Program FilesJavajdk1.8.0_201jrelibextjaccess.jar;D:Program FilesJavajdk1.8.0_201jrelibextjfxrt.jar;D:Program FilesJavajdk1.8.0_201jrelibextlocaledata.jar;D:Program FilesJavajdk1.8.0_201jrelibext
ashorn.jar;D:Program FilesJavajdk1.8.0_201jrelibextsunec.jar;D:Program FilesJavajdk1.8.0_201jrelibextsunjce_provider.jar;D:Program FilesJavajdk1.8.0_201jrelibextsunmscapi.jar;D:Program FilesJavajdk1.8.0_201jrelibextsunpkcs11.jar;D:Program FilesJavajdk1.8.0_201jrelibextzipfs.jar;D:Program FilesJavajdk1.8.0_201jrelibjavaws.jar;D:Program FilesJavajdk1.8.0_201jrelibjce.jar;D:Program FilesJavajdk1.8.0_201jrelibjfr.jar;D:Program FilesJavajdk1.8.0_201jrelibjfxswt.jar;D:Program FilesJavajdk1.8.0_201jrelibjsse.jar;D:Program FilesJavajdk1.8.0_201jrelibmanagement-agent.jar;D:Program FilesJavajdk1.8.0_201jrelibplugin.jar;D:Program FilesJavajdk1.8.0_201jrelib
esources.jar;D:Program FilesJavajdk1.8.0_201jrelib
t.jar;C:UsersadminIdeaProjectsScalaDayoutproductionScalaDay;C:Program Files (x86)scalalibscala-actors-2.11.0.jar;C:Program Files (x86)scalalibscala-actors-migration_2.11-1.1.0.jar;C:Program Files (x86)scalalibscala-library.jar;C:Program Files (x86)scalalibscala-parser-combinators_2.11-1.0.4.jar;C:Program Files (x86)scalalibscala-reflect.jar;C:Program Files (x86)scalalibscala-swing_2.11-1.0.2.jar;C:Program Files (x86)scalalibscala-xml_2.11-1.0.4.jar" com.aura.scala.day01.caseClasses
978-0486282114
(come on,lianghong,panzidong)
true
(lianghong,11111,come on)

Process finished with exit code 0
原文地址:https://www.cnblogs.com/lianghong881018/p/11162828.html