我正在努力学习 Scala——来自 C++ 背景。我正在尝试为我正在一起破解的任务跟踪应用程序编写一个小班,以帮助我学习如何编写 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
那么我错过了什么?我正在研究“Scala 编程”,所以如果这个问题有一个简单的答案,请给我页码。我不介意阅读第 60 页和第 62 页上的代码,但我不明白为什么此代码会失败。
我猜这与这些是构造函数方法有关,并且可能两个 val 直到构造函数结束时才被初始化。如果是这种情况,有什么方法可以达到我想要的效果吗?