私は 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)
}
}
Task(ID, Description)、Task(ID)、Task(Description) の 3 つのコンストラクタを提供しようとしています。後者の 2 つのケースでは、値の 1 つが呼び出し元によって提供されない場合、値を定数値に初期化したいと考えています。そして、単体テストの目的で、クラスの外でこれをチェックできるようにしたいと考えています。したがって、2 つの public val を配置することで、クラスの外部からチェックして、自分の状態が期待どおりであることを確認できると考えました。
ただし、何らかの理由でこのコードはコンパイルされません。次のエラーが表示されます。
error: not found: value EmptyID
と
error: not found: value EmptyDescription
それで、私は何が欠けていますか?私は「Scala でのプログラミング」に取り組んでいるので、この質問に対する簡単な答えがあれば、ページ番号を教えてください。読んでも構いませんが、60 ページと 62 ページのコードを見ると、このコードが失敗する理由がわかりません。
これらがコンストラクターメソッドであり、コンストラクターの最後まで2つの値が初期化されない可能性があるという事実と関係があると思います。その場合、私が探している効果を得る方法はありますか?