Assumer ce code Java:Besoin d'aide avec les variables d'instance de Scala
public class A {
public A(String g) {
x += g.length();
}
private int x = 0;
}
Si je crée une instance de A, comme celui-ci:
A a = new A("geo");
après cet appel, la valeur de x sera 3. Qu'est-ce que je fais de mal dans mon code Scala?
class A(val g:String) {
x += g.length
var x:Int = 0
}
object x extends Application {
val x = new A("geo")
println(x.x)
}
Cette affiche 0. Je suppose que lorsque le compilateur atteint le var x:Int = 0
, le corps du constructeur principal a pris fin. Ai-je tort? Sinon, comment pourriez-vous déclarer les variables d'instance dans Scala (en supposant que je ne les veux pas dans mon constructeur)?
Ok, attendons de voir. – Geo
Chaque ligne de code qui n'est pas dans un corps de méthode def est un code constructeur. Val et var code d'initialisation est inclus dans cela et le constructeur est l'accumulation de haut en bas de tout ce code. Notez que ceci inclut des choses comme la méthode * appels * intercalés entre les définitions de val, var et def * *. –