Scala case class

case class

case class:案例类,具有常规类的所有功能,是为函数式编程提供支持的 Scala 特性。

case class 的特性如下:

  • 案例类中所有的主构造器中所有的参数默认使用 val 修饰,作为类的成员属性。
  • 案例类编译时会自动添加伴生对象以及去全参的 apply 方法,用于类的构造。
  • 案例类编译时会自动添加伴生对象以及去全参的 unapply 方法(提取器),用于通过 match 表达式进行模式匹配。
  • 案例类编译时会自动重写 toString 方法,便于对象的打印,格式为 类名(属性1, 属性2, …)。
  • 案例类编译时会自动生成 copy 方法,用于对象的克隆。
  • equals 和 hashCode 方法也被自动生成,可以比较对象并将他们用作映射中的键。

定义 case class:

object Scala_case_class {

    def main(args: Array[String]): Unit = {

        // 无需使用 new 关键字
        var stu1 = Stu("张三", 18)
        // 无需自己写 toString 方法
        println(stu1)

    }

}

case class Stu(name: String, age: Int)

copt 方法:

copy 方法可实现对象的复制,可以在复制时修改属性值。传参的形式有多种样式。

image-20211208165234648

var stu1 = Stu("张三", 18)
println(stu1)

var stu2 = stu1.copy()
println(stu2)   // Stu(张三,18)

var stu3 = stu1.copy("李四")
println(stu3)   // Stu(李四,18)

var stu4 = stu1.copy("李四", 20)
println(stu4)   // Stu(李四,20)

var stu5 = stu1.copy(age = 22)
println(stu5)   // Stu(张三,22)

unapply 方法:

用于模式匹配

参考:模式匹配

 


❤️ END ❤️
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JOEL-T99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值