2012-03-29 12 views
8

Mi problema es comprender la sintaxis de Scala. Vengo de un fondo Java. Estoy tratando de hacer una variable del mismo tipo que la clase es en el ejemplo:.¿Cómo inicializar las variables vacías de su propio tipo en Scala?

class Exp { 
var exp1: Exp; 
} 

estoy recibiendo este error:

Driver.scala:4: error: class Exp needs to be abstract, since variable exp1 is not defined 
(Note that variables need to be initialized to be defined) 
    class Exp { 

¿Puede alguien explicar por qué no puedo hacer esto? Soy nuevo en el lenguaje. Cualquier explicación ayudaría a entenderlo mejor.

Respuesta

16

Porque necesita inicializarlo. De lo contrario, el compilador cree que solo quiere la interfaz de la variable: los métodos getter y setter. Es muy similar a cómo un método sin cuerpo es abstracto. Lo siguiente lo inicializará para nulo y le dará una clase concreta válida con una variable concreta.

class Exp { 
    var exp1: Exp = _; 
} 

Este uso de _ significa "valor por defecto", donde el valor predeterminado es nulo para los tipos de referencia y 0, falso, o algo similar para los tipos no son de referencia.

+0

Sé que el _ significa comodín en Scala, pero ¿qué está haciendo realmente cuando dices eso? – Andy

+0

Agregué un poco más a la respuesta sobre ese uso de _ –

+0

Ahh, ya veo. ¡Gracias! – Andy

Cuestiones relacionadas