Estoy trabajando para aprender Scala, proveniente de un fondo de C++. Estoy intentando escribir una clase pequeña para una aplicación de seguimiento de tareas Estoy pirateando juntos a ayúdame a aprender cómo codificar Scala.Usar variables de clase como constantes en Scala
Esto parece como si debe ser simple, pero por alguna razón que me está eludiendo:
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)
}
}
Estoy tratando de proporcionar tres constructores: Tarea (Identificación, descripción), de tareas (ID), Tarea (Descripción). En los últimos 2 casos quiero inicializar los valores a valores constantes si uno de los valores no es proporcionado por la persona que llama. Y deseo poder verificar esto fuera del de la clase para fines de pruebas unitarias. Así que pensé que poner dos valores públicos me permitiría verificar desde fuera de la clase para hacer y asegurarme de que mi estado es lo que esperaba.
Sin embargo, por alguna razón este código no se compilará. Me sale el siguiente error:
error: not found: value EmptyID
y
error: not found: value EmptyDescription
Entonces, ¿qué me falta? Estoy trabajando en "Programación en Scala" así que si hay una respuesta simple a esta pregunta, por favor dame los números de la página . No me importa leer pero siguiendo el código en la página 60 y página 62, no puedo ver por qué este código está fallando.
Supongo que tiene algo que ver con el hecho de que estos son los métodos de constructor y que posiblemente los dos vals no se hayan inicializado hasta el final de los constructores. Si ese es el caso ¿hay alguna forma de obtener el efecto que estoy buscando?
Vea también SIP 23 o '42.type': http://stackoverflow.com/a/39065260/6309 – VonC