为了账号安全,请及时绑定邮箱和手机立即绑定

Scala的案例类和类之间有什么区别?

Scala的案例类和类之间有什么区别?

繁花如伊 2019-09-18 10:44:37
我在谷歌搜索找到a case class和a 之间的差异class。每个人都提到当你想在类上进行模式匹配时,使用用例类。否则使用类并提及一些额外的额外津贴,如equals和hash code overriding。但这些是为什么应该使用案例类而不是类的唯一原因?我想在Scala中这个功能应该有一些非常重要的原因。有什么解释或者是否有资源可以从中了解有关Scala案例类的更多信息?
查看完整描述

3 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

案例类可以看作是普通的和不可变的数据保持对象,它们应该完全取决于它们的构造函数参数

这个功能概念允许我们

  • 使用紧凑的初始化语法(Node(1, Leaf(2), None))

  • 使用模式匹配来分解它们

  • 有隐含地定义的相等比较

结合继承,case类用于模拟代数数据类型。

如果一个对象在内部执行有状态计算或表现出其他类型的复杂行为,它应该是一个普通的类。


查看完整回答
反对 回复 2019-09-18
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

没有人提到案例类也是Product这些方法的实例并因此继承这些方法:


def productElement(n: Int): Any

def productArity: Int

def productIterator: Iterator[Any]

其中productArity返回的类的参数的数量,productElement(i)返回我个参数,并productIterator允许通过迭代他们。


查看完整回答
反对 回复 2019-09-18
  • 3 回答
  • 0 关注
  • 865 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信