scala-29:Case class和Case object代码实战解析

本文深入探讨Scala中的Case Class和Case Object。Case Class用于创建不可变属性,如Student和Worker,便于消息传递。Case Object则作为共享对象或唯一实例。内容包括Case Class的copy方法、模式匹配及伴生对象的应用,特别是apply和UNapply方法的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容:

1、Case Class代码实战解析

2、Case Object实战解析

(用于传递消息和模式匹配)

<span style="white-space:pre">	</span>abstract class Person
<span style="white-space:pre">	</span>case class Student(age: Int) extends Person
<span style="white-space:pre">	</span>case class Worker(age: Int, salary: Double) extends Person
<span style="white-space:pre">	</span>case object Shared extends Person

      Student扩展了一个不可变属性ageWorker扩展了2个不可变属性agesalary,以用来传递消息。Case Object扩展一个共享对象或唯一对象。

   def caseOps(person: Person) =  person match {
	case Student(age) => println("I am " + age + "years old")
	case Worker(_, salary) => println("Wow, I got " + salary)
	case Shared => println("No property")
	}
	  caseOps(Student(19))
	  caseOps(Shared)

      使用模式匹配提取到case class中的student属性值,以及case object中的共享对象Shared

<span style="white-space:pre">	</span>val worker = Worker(29, 10000.1)
<span style="white-space:pre">	</span>val worker2 = worker.copy(salary = 19.95)
<span style="white-space:pre">	</span>val worker3 = worker.copy(age = 30)

//调用copy方法改变worker中的值;

每个case class中都会有伴生对象apply方法(作用:构建对象),伴生对象会帮我们构建出具体的对象,重要的是模式匹配时候会从case class中提取处理,提取方法也为伴生对象中的UNapply(作用:从构建的对象中提取内容)其中包含了copyequrestoString方法等。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值