Pourquoi je ne peux pas accéder aux méthodes de classe de cas à l'intérieur de la méthode de classe ordinaire lorsque j'ouvre une instance de classe case sans mot-clé new
? I.e. dans le code suivant, je reçois une erreur de compilation:Accès aux méthodes des classes de cas
case class A() {
private var _g = 12
//getter-setter
def g = _g
def g_=(value : Int) = this._g = value
}
class B {
def someMethod = {
val aInstance = A
aInstance.g = 4; // compile time error. Why?
}
}
Mais si j'ajoute new
mot-clé dans aInstance
déclaration de toutes les fins de travail.
message d'erreur:
Cannot resolve symbol g
Deux choses: D'abord, donnez l'erreur exacte. Deuxièmement, pourquoi utiliseriez-vous une classe de cas dans ce cas? – gzm0
@ gzm0 s'il vous plaît examiner la question mise à jour. J'ai remarqué que l'erreur de compilation se produit uniquement si je n'utilise pas le mot clé 'new' lors de la création d'une instance de classe de cas. Et à votre deuxième question: je ne sais pas pourquoi je ne peux pas utiliser la classe de cas dans ce contexte, je suis débutant dans Scala, donc j'écris ce code uniquement pour la formation – MyTitle