我正在學習Scala - 來自C++背景。我正在嘗試 爲一個任務跟蹤應用程序編寫一個小課程,我正在一起攻擊 幫助我學習如何編寫Scala。使用類變量作爲Scala中的常量
這好像應該是簡單的,但由於某種原因,它躲避我:
package com.catenacci.tts
class Task(val ID:Int, val Description:String) {
val EmptyID = 0
val EmptyDescription = "No Description"
def this() = this(EmptyID,EmptyDescription)
def this(ID:Int)={
this(ID,EmptyDescription)
}
def this(Description:String)={
this(EmptyID,Description)
}
}
我想提供三個構造函數:任務(ID,描述), 任務(ID),任務(描述)。在後兩種情況下,如果其中一個值不是由調用者提供的 ,我想 將值初始化爲常量值。我希望能夠在單元測試目的下檢查該類的外部 。所以我認爲在兩個 公共vals會讓我從課外檢查,使 確定我的狀態是我所期望的。
但是,由於某些原因,這段代碼無法編譯。我得到以下錯誤:
error: not found: value EmptyID
和
error: not found: value EmptyDescription
所以我缺少什麼?我正在通過「編程斯卡拉」如此 如果這個問題有一個簡單的答案,請給我頁 號碼。我不介意閱讀,但通過第60頁和 第62頁的代碼,我看不出爲什麼這個代碼失敗。
我猜這跟 構造函數方法有關,可能這兩個val不是初始化爲 直到構造函數結束。如果是這種情況,有一些 方式來獲得我正在尋找的效果?
另請參見SIP 23或`42.type`:http://stackoverflow.com/a/39065260/6309 – VonC 2016-08-21 14:24:45