diesen Java-Code wird angenommen:Beispiel Hilfe bei Scala Variablen benötigt
public class A {
public A(String g) {
x += g.length();
}
private int x = 0;
}
Wenn ich eine Instanz von A, wie dies zu erstellen:
A a = new A("geo");
nach diesem Aufruf wird der Wert von x 3. Was mache ich falsch in meinem Scala-Code?
class A(val g:String) {
x += g.length
var x:Int = 0
}
object x extends Application {
val x = new A("geo")
println(x.x)
}
Dieser druckt 0 ich davon aus, dass, wenn der Compiler die var x:Int = 0
erreicht, hat der Körper des Haupt Konstruktor beendet. Liege ich falsch? Wie sonst könnten Sie Instanzvariablen in Scala deklarieren (vorausgesetzt, ich möchte sie nicht in meinem Konstruktor haben)?
Ok, lass uns abwarten. – Geo
Jede Codezeile, die sich nicht in einem def (Methodenkörper) befindet, ist ein Konstruktorcode. Der Val- und Var-Initialisierungscode ist darin enthalten, und der Konstruktor ist die Top-Bottom-Akkumulation des gesamten Codes. Beachten Sie, dass dies Dinge wie Methoden * Aufrufe * zwischen val, var und def * Definitionen * eingefügt enthält. –