Sto lavorando per imparare Scala - proveniente da uno sfondo C++. Sto cercando di scrivere una piccola classe per un'applicazione di tracciamento delle attività che sto hackerando insieme a aiutami ad imparare come programmare Scala.Utilizzare le variabili di classe come costanti in Scala
Questo sembra come se dovrebbe essere semplice, ma per qualche motivo mi sta sfuggendo:
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)
}
}
Sto cercando di fornire tre costruttori: Task (ID, descrizione), Task (ID), Task (Descrizione). Negli ultimi 2 casi, voglio inizializzare i valori su valori costanti se uno dei valori non è fornito dal chiamante. E voglio essere in grado di controllare questo fuori della classe per scopi di test unitari. Quindi ho pensato di inserire due valenze pubbliche mi permettesse di controllare da fuori della classe per rendere sicuro che il mio stato è quello che mi aspetto.
Tuttavia, per qualche motivo questo codice non verrà compilato. Ottengo il seguente errore:
error: not found: value EmptyID
e
error: not found: value EmptyDescription
Allora, cosa mi manca? Sto lavorando a "Programming in Scala" quindi se c'è una risposta semplice a questa domanda, per favore dammi i numeri di pagina . Non mi interessa leggere ma passare il codice a pagina 60 e pagina 62, non riesco a capire perché questo codice non funziona.
Immagino che abbia qualcosa a che fare con il fatto che si tratta di metodi di costruzione e che probabilmente i due val non sono inizializzati fino alla fine dei costruttori. Se questo è il caso c'è qualche modo per ottenere l'effetto che sto cercando?
Vedere anche SIP 23 o '42.type': http://stackoverflow.com/a/39065260/6309 – VonC