在Scala中,为什么是'case object'而不只是'object'?

时间:2016-10-18 09:58:21

标签: scala akka

我阅读并理解,case class是发送参数并创建多个对象而case object不发送任何参数并具有单个对象。因此object也可以实现case object

为什么case object很重要?何时?我已经完成了这篇文章,但我没理解为什么case object

Difference between case class and case object?

1 个答案:

答案 0 :(得分:0)

嗯...... object中的Scala可以"roughly"解释为anonymous class的实例。现在,case objectobject的区别在于anonymous classcase classclass

之间的差异

更明确地说,

object A

// is roughly equivalent to something like

class AnonymousClass12345
val A = new AnonymousClass12345()

case object

的位置
case object A

// is roughly equivalent to something like,

case class AnonymousClass12345
val A = new AnonymousClass12345()

现在,与case class vs class相关联应该非常简单。作为anonymous case class的一个实例,case object获得了任何其他case class的任何实例的所有好处。

注意::此答案旨在提供不准确但易于理解的解释。对这个问题的一个更准确的答案不仅需要理解差异class vs type,而且差异很大(但不是非常准确)地讨论了这个差异 - answer而且还需要Scala反思。