一個相當簡單的練習Cay Horstmann的本書«斯卡拉的不耐煩»讓我困惑。這是關於primary
,auxiliary
和default primary
構造函數:構造函數在斯卡拉(主/輔助/默認主)
前5.10: 考慮類
class Employee(val name: String, var salary: Double) {
def this() { this("John Q. Public", 0.0) }
}
重寫它使用明確的領域和默認的主構造。
我不確定我應該做什麼。你們中的一些人能否提出解決方案?
然而,試圖解決這個練習可以使我意識到這是我之前關於主構造和val
領域還沒有注意到(正如你所看到的,我不是很確定):
上午我如果我說0123'字段(name
在Employee
類中)只能通過primary
的構造函數初始化,而不是通過auxiliary
初始化?在後一種情況下,編譯器會將其視爲重新分配給導致錯誤的val
字段。
起初我認爲val
字段與java中的final字段大致相當,期望在任何構造函數中第一次分配它們都是合法的,但似乎我錯了。
我不太滿意什麼可能只是一個瘋狂的猜測,所以我很感激,如果有人能給我更準確的信息關於這一點。
我有同樣的練習這個確切的問題。也許我被作者的「明確」含義所困惑。 – vmayer