Scala avrebbe dovuto sapere che questo tipo di scrittura:Ogni metodo "setter" richiede un metodo "getter" in Scala?
class Person{
var id = 0
}
var p = new Person
p.id
p.id = 2
equivale a
class Person{
private var _id = 0
def id = _id
def id_=(i: Int) = _id = i
}
val p = new Person
p.id // be equal to invoke id method of class Person
p.id = 2 // be equal to p.id_=(2)
a tutti gli effetti. Ma se si commento il metodo getter def id = _id
, p.id = 2
causerà un errore di compilazione, dicendo
error: value key is not a member of Person
Qualcuno potrebbe spiegare perché?
Le tue due definizioni di 'Persona' non sono esattamente equivalenti, perché la seconda genererà anche metodi getter e setter privati per' _id'. –