gpt4 book ai didi

syntax - 在 Scala 中使用类变量作为常量

转载 作者:行者123 更新时间:2023-12-03 11:46:58 25 4
gpt4 key购买 nike

我正在努力学习 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),任务(描述)。在后两种情况下,我想
如果其中一个值不是,则将这些值初始化为常量值
由调用方提供。我希望能够在外面检查这个
用于单元测试目的的类。所以我想放两个
公共(public) vals 将允许我从课外检查
确保我的状态是我所期望的。

但是,由于某种原因,此代码将无法编译。我收到以下错误:
error: not found: value EmptyID


error: not found: value EmptyDescription

那么我错过了什么?我正在研究“Scala编程”所以
如果这个问题有一个简单的答案,请给我页面
数字。我不介意阅读,而是按照第 60 页的代码和
第 62 页,我不明白为什么这段代码会失败。

我猜这与这些事实有关
构造方法,并且可能两个 val 没有初始化
直到构造函数结束。如果是这样的话,有一些
获得我想要的效果的方法?

最佳答案

您可以在伴随对象中定义常量:

object Task { 
val EmptyID = 0
val EmptyDescription = "No Description"
}

然后将它们引用为 Task.EmptyID 和 Task.EmptyDescription。

我认为 Scala 2.8 支持默认值。

关于syntax - 在 Scala 中使用类变量作为常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/803206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com