我正在努力学习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)
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试提供三个构造函数:任务(ID,描述),任务(ID),任务(描述).在后两种情况下,如果调用者没有提供其中一个值,我想将值初始化为常量值.我希望能够在课堂外进行检查以进行单元测试.因此,我认为加入两个公共警察可以让我从班级外面检查,以确保我的状态是我所期望的.
但是,由于某种原因,此代码将无法编译.我收到以下错误:
error: not found: value EmptyID
Run Code Online (Sandbox Code Playgroud)
和
error: not found: value EmptyDescription
Run Code Online (Sandbox Code Playgroud)
那我错过了什么?我正在完成"Scala编程",所以如果对这个问题有一个简单的答案,请给我页码.我不介意阅读,但是按照第60页和第62页的代码,我不明白为什么这段代码失败了.
我猜这与构造函数方法有关,可能两个val在构造函数结束之前都没有初始化.如果是这样的话,是否有某种方法可以获得我正在寻找的效果?