Il motivo ovvio è di non lasciare le variabili non inizializzate. Nota che nella tua dichiarazione senza inizializzazione, dovrai anche specificare il tipo.
var x: Type;
dà il seguente errore:
only classes can have declared but undefined members (Note that variables need to be initialized to be defined)
in realtà solo le classi astratte possono dichiarare i membri senza definire. È ancora possibile ottenere il comportamento desiderato (variabili inizializzate ad un valore di default) come
var x: Type = _
Se Type
è un tipo di riferimento, x
sarà null
. Questo scenario è utile, ad esempio, nel caso in cui un metodo factory completi l'inizializzazione di un oggetto dopo la costruzione dell'oggetto.
fonte
2013-07-08 16:14:04
Bella spiegazione del caso 'var'. Dal momento che non è possibile riassegnare identificatori 'val' dopo la dichiarazione, la rimozione di questa restrizione favorirebbe efficacemente la proliferazione di più nomi per' null'. Quale sarebbe male. –
Copia e incolla il tuo esempio con 'var x: Long = _' ma mi dà errore:' Le variabili locali devono essere inizializzate '. C'è ancora bisogno di conoscere i nuovi arrivati di Scala per poter utilizzare la tua soluzione? Ad esempio, poiché l'OP richiede un tipo numerico, quale sarebbe un appropriato 'Tipo' numerico da usare per' x'? – ecoe
Come si può vedere, la notazione 'var ... = _' funzionerebbe solo per i membri della classe e non per le variabili locali. Credo che non ci siano situazioni che giustificano variabili locali non inizializzate. –