Assumere questo codice Java:bisogno di aiuto con le variabili di istanza di Scala
public class A {
public A(String g) {
x += g.length();
}
private int x = 0;
}
Se creo un 'istanza di A, in questo modo:
A a = new A("geo");
dopo questa chiamata, il valore di x sarà 3. Cosa sto sbagliando nel mio codice 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)
}
Questo stampa 0. ho pensato che quando il compilatore raggiunge la var x:Int = 0
, il corpo del costruttore principale si è concluso. Ho sbagliato? In quale altro modo è possibile dichiarare variabili di istanza in Scala (supponendo che non le vogliano nel mio costruttore)?
Ok, aspettiamo e vediamo. – Geo
Ogni riga di codice che non si trova all'interno di un def (corpo del metodo) è un codice costruttore. Il codice di inizializzazione di Val e var è incluso in questo e il costruttore è l'accumulo top-to-bottom di tutto quel codice. Si noti che questo include cose come il metodo * chiamate * intervallate tra le definizioni val, var e def * *. –