在Scala,为什么';案例对象';而不仅仅是';对象';?
我阅读并理解,在Scala,为什么';案例对象';而不仅仅是';对象';?,scala,akka,Scala,Akka,我阅读并理解,case类是发送参数并创建多个对象,而case对象不发送任何参数并使用单个对象。所以这将通过对象实现,也就是为什么案例对象 为什么案例对象重要,何时重要?我已经看过这篇文章了,但我不明白为什么案例对象 嗯。。。Scala中的对象可以被“粗略地”解释为匿名类的实例。现在案例对象和对象的区别在于匿名类是案例类还是仅仅是类 更清楚地说, object A // is roughly equivalent to something like class AnonymousClass12
case类
是发送参数并创建多个对象,而case对象
不发送任何参数并使用单个对象。所以这将通过对象
实现,也就是为什么案例对象
为什么案例对象
重要,何时重要?我已经看过这篇文章了,但我不明白为什么案例对象
嗯。。。
Scala
中的对象
可以被“粗略地”
解释为匿名类的实例。现在案例对象
和对象
的区别在于匿名类
是案例类
还是仅仅是类
更清楚地说,
object A
// is roughly equivalent to something like
class AnonymousClass12345
val A = new AnonymousClass12345()
其中对于案例对象
case object A
// is roughly equivalent to something like,
case class AnonymousClass12345
val A = new AnonymousClass12345()
现在它应该很容易与案例类
与类
相关联。作为匿名案例类
的一个实例,案例对象
获得了任何其他案例类
的所有好处
注:此答案旨在提供不准确但易于理解的解释。要想更准确地回答这个问题,不仅需要理解本文中讨论的类与类型之间的差异,而且还需要理解Scala反射。我读了那篇文章,没有澄清我的疑问,所以我发布了。如果可以的话,请帮助我。@YuvalItzchakov在这个问题上的回答并没有解决OP的真正问题,这就是case对象
@Sarvesh中case
的重要性,但是当添加case
对象a
是a.type
的一个实例时,上述副本提供了完全不同的语义,不是“匿名类”。简单地说,case意味着不可变,对吗?不。。。因为大号的case类
或case对象
与不变性
@mikołakwell没有任何关系。。。我想您没有注意到,中的大致相当于类似的东西。或者您准备好向像OP这样的Scala初学者解释什么是.type了吗?
?编辑了答案,大致强调了
@SarveshKumarSingh:1。我注意到,在最初的修订版(现在编辑,谢谢)的一开始,“只不过是”。2.是的,当然,例如,A
是一个自动生成的“类”A.type
的实例是如何发音的?