【发布时间】:2013-11-03 19:13:20
【问题描述】:
我对 Scala 很陌生,但我已经使用过案例类。我了解了常规类和案例类之间的主要区别,总结为here。
我什至不想摆脱案例类,但我想知道转换所需的代码是什么,例如:
class Tweet(val user: String, val text: String) {
override def toString: String =
"User: " + user + "\n" +
"Text: " + text + "]"
}
进入一个完整的案例“兼容”类。我的意思是,我想编写一个案例类的相同“行为”,但不使用case 关键字。这是可能的还是编译器做了一些我无法通过代码得到的事情(不包括优化)?
再次澄清我在问什么,当我需要一个案例类时,我总是会使用 case 关键字,但我想知道 Scala 编译器(一般意义上)为我做了什么, 用代码表示。
编辑: 另一个疑问:编译器会以某种方式标记我的手工编码类与标准案例类,以便我可以观察到执行中的不同行为吗?
【问题讨论】:
-
Scala 编译器不区分这两者。案例类只是普通类,但编译器会自动生成很多与它们相关的东西,因此它们的行为不同。您可以考虑为您所面临的问题提供更简单的答案。
标签: scala