我在谷歌搜索找到a case class和a 之间的差异class。每个人都提到当你想在类上进行模式匹配时,使用用例类。否则使用类并提及一些额外的额外津贴,如equals和hash code overriding。但这些是为什么应该使用案例类而不是类的唯一原因?我想在Scala中这个功能应该有一些非常重要的原因。有什么解释或者是否有资源可以从中了解有关Scala案例类的更多信息?
3 回答
心有法竹
TA贡献1866条经验 获得超5个赞
案例类可以看作是普通的和不可变的数据保持对象,它们应该完全取决于它们的构造函数参数。
这个功能概念允许我们
使用紧凑的初始化语法(
Node(1, Leaf(2), None))
)使用模式匹配来分解它们
有隐含地定义的相等比较
结合继承,case类用于模拟代数数据类型。
如果一个对象在内部执行有状态计算或表现出其他类型的复杂行为,它应该是一个普通的类。
Cats萌萌
TA贡献1805条经验 获得超9个赞
没有人提到案例类也是Product这些方法的实例并因此继承这些方法:
def productElement(n: Int): Any
def productArity: Int
def productIterator: Iterator[Any]
其中productArity返回的类的参数的数量,productElement(i)返回我个参数,并productIterator允许通过迭代他们。
添加回答
举报
0/150
提交
取消