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

我在谷歌搜索找到a case class和a 之间的差异class。每个人都提到当你想在类上进行模式匹配时,使用用例类。否则使用类并提及一些额外的额外津贴,如equals和hash code overriding。但这些是为什么应该使用案例类而不是类的唯一原因?

我想在Scala中这个功能应该有一些非常重要的原因。有什么解释或者是否有资源可以从中了解有关Scala案例类的更多信息?


繁花如伊
浏览 823回答 3
3回答

心有法竹

案例类可以看作是普通的和不可变的数据保持对象,它们应该完全取决于它们的构造函数参数。这个功能概念允许我们使用紧凑的初始化语法(Node(1, Leaf(2), None)))使用模式匹配来分解它们有隐含地定义的相等比较结合继承,case类用于模拟代数数据类型。如果一个对象在内部执行有状态计算或表现出其他类型的复杂行为,它应该是一个普通的类。

Cats萌萌

没有人提到案例类也是Product这些方法的实例并因此继承这些方法:def productElement(n: Int): Anydef productArity: Intdef productIterator: Iterator[Any]其中productArity返回的类的参数的数量,productElement(i)返回我个参数,并productIterator允许通过迭代他们。
打开App,查看更多内容
随时随地看视频慕课网APP