Как инициализировать пустые переменные из вашего собственного типа в Scala? - PullRequest
9 голосов
/ 30 марта 2012

Моя проблема в понимании синтаксиса Scala. Я пришел из фона Java. Я пытаюсь создать переменную того же типа, что и класс, в котором она находится. Пример:

class Exp {
var exp1: Exp;
}

Я получаю эту ошибку:

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 {

Может кто-нибудь объяснить, почему я не могу этого сделать? Я новичок в языке. Любое объяснение поможет лучше понять его.

1 Ответ

16 голосов
/ 30 марта 2012

Потому что вам нужно его инициализировать.В противном случае компилятор считает, что вам нужен только интерфейс переменной: методы getter и setter.Это очень похоже на то, как метод без тела является абстрактным.Следующий код инициализирует его как null и даст вам действительный конкретный класс с конкретной переменной.

class Exp {
  var exp1: Exp = _;
}

Это использование _ означает «значение по умолчанию», где по умолчанию null для ссылочных типов и 0, false,или что-то подобное для нереферентных типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...