2016-05-11 34 views
8

This Scala tutorial ha il seguente da dire in proposito la dichiarazione delle variabili, senza un valore iniziale:Dichiarare una variabile senza un valore iniziale

Se non si assegna alcun valore iniziale ad una variabile, allora è valida la seguente:

var myVar :Int; 
val myVal :String; 

Ma quando provo che il codice nella Scala REPL, ottengo questi errori:

scala> var myVar :Int; 
<console>:10: error: only classes can have declared but undefined members 
(Note that variables need to be initialized to be defined) 
     var myVar :Int; 
     ^

scala> val myVal :String; 
<console>:10: error: only classes can have declared but undefined members 
     val myVal :String; 

Perché è questo? Il tutorial per una versione precedente di Scala?
Non sono riuscito a trovare una versione specifica di Scala per cui è stato scritto il tutorial, ma sto eseguendo la versione di Scala 2.11.7 su OpenJDK a 64 bit, Java 1.8.0_66.


  • il tutorial obsoleto, o è il problema con il mio ambiente?

  • È possibile dichiarare una variabile (var o val) senza inizializzarla?

risposta

17

L'errore è corretto, è possibile farlo solo su una classe astratta o tratto. Il tutorial potrebbe presumere che tu stia scrivendo quel codice all'interno di una classe astratta.

E 'possibile inizializzare le variabili di un certo valore di default:

var i: Int = _ 
var s: String = _ 

Ma questo è essenzialmente la stessa:

var i: Int = 0 
var s: String = null 
+0

Dove sono questi "valori di default" valori provenienti da? Dipende dal tipo? Il compilatore di scala definisce i valori di default per i tipi di base come 'String'? – juanmirocks

+0

Rispondendo alla mia domanda, suppongo che tutti i 'AnyRef' siano predefiniti a' null', e che 'AnyVal' deve avere il loro valore predefinito definito in qualche modo (non si vede ancora dove ciò accade). – juanmirocks

Problemi correlati