Я работаю над изучением 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). В последних двух случаях я хочу инициализировать значения постоянными значениями, если одно из значений не предоставлено вызывающим абонентом. И я хочу иметь возможность проверить это вне класса для целей модульного тестирования. Поэтому я решил, что добавление двух публичных переменных позволит мне проверять извне класса, чтобы убедиться, что мое состояние соответствует ожиданию.
Однако по какой-то причине этот код не скомпилируется. Я получаю следующую ошибку:
error: not found: value EmptyID
и
error: not found: value EmptyDescription
Итак, что мне не хватает? Я работаю над «Программированием на Scala», поэтому, если есть простой ответ на этот вопрос, пожалуйста, дайте мне номера страниц. Я не против прочитать, но, взглянув на код на странице 60 и странице 62, я не понимаю, почему этот код не работает.
Я предполагаю, что это как-то связано с тем, что это методы конструктора и, возможно, два vals не инициализируются до конца конструкторов. Если это так, есть ли способ получить эффект, который я ищу?
42.type
: stackoverflow.com/a/39065260/6309 - person VonC   schedule 21.08.2016