我在Google中进行了搜索,以查找case classclass之间的区别。每个人都提到,当您要在类上进行模式匹配时,请使用用例类。否则,使用类,还提及一些额外的好处,例如equals和哈希码覆盖。但是,这些是为什么应该使用案例类而不是类的唯一原因吗?

我猜应该在Scala中使用此功能有一些非常重要的原因。有什么解释?是否有资源可以从中学习更多有关Scala案例类的信息?

最佳答案

案例类可以被视为普通且不可变的数据保存对象,应仅取决于其构造函数参数。

这个功能性概念使我们能够

  • 使用紧凑的初始化语法(Node(1, Leaf(2), None)))
  • 使用模式匹配
  • 分解它们
  • 具有相等比较,隐式定义了

  • 与继承结合,案例类用于模仿algebraic datatypes

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

    09-28 03:38