【发布时间】:2012-05-12 15:49:12
【问题描述】:
Cay Horstmann 的一书中的一个非常简单的练习«为不耐烦的人准备的 Scala» 一直困扰着我。关于primary、auxiliary 和default primary 构造函数:
前 5.10: 考虑类
class Employee(val name: String, var salary: Double) {
def this() { this("John Q. Public", 0.0) }
}
重写它以使用显式字段和默认的主构造函数。
我不确定我应该这样做。你们中的一些人可以提出解决方案吗?
但是,尝试解决这个问题可能让我意识到了一些我以前没有注意到的关于主构造函数和 val 字段(如您所见,我不太确定):
如果我说val 字段(如上面Employee 类中的name)只能通过primary 构造函数而不是auxiliary 初始化,我说得对吗?在后一种情况下,编译器会将其视为对 val 字段的重新分配,从而导致错误。
起初我认为 val 字段大致相当于 java 中的 final 字段,希望在任何构造函数中首次分配它们是合法的,但似乎我错了。
我对这可能只是一个疯狂的猜测不太满意,所以如果有人能给我关于这一点的更准确信息,我将不胜感激。
【问题讨论】:
-
我在同一个练习中遇到了这个确切的问题。也许我对作者所说的“明确”的意思感到困惑。
标签: scala constructor