【发布时间】:2010-10-22 15:19:18
【问题描述】:
我正在努力学习 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 没有初始化 直到构造函数结束。如果是这样的话,有一些 如何获得我想要的效果?
【问题讨论】:
-
另见 SIP 23 或
42.type: stackoverflow.com/a/39065260/6309