Подтвердить что ты не робот

Scala: зачем нужно присваивать значения var/val во время объявления

Если я делал это неправильно. Кажется, мы не можем делать такие вещи, как:

var x;
x = 1;

в Scala, но вам нужно объявить и присвоить ему значение. Есть ли причины, почему это так?

4b9b3361

Ответ 1

Очевидная причина заключается в том, чтобы не оставлять переменные неинициализированными. Обратите внимание, что в объявлении без инициализации вам также необходимо указать тип.

var x: Type;

дает следующую ошибку:

только классы могут объявлять, но undefined members (обратите внимание, что переменные должны быть инициализированы для определения)

Фактически только абстрактные классы могут объявлять членов без их определения. Вы все равно можете получить желаемое поведение (переменные, инициализированные значением по умолчанию), как

var x: Type = _

Если Type является ссылочным типом, x будет null. Этот сценарий полезен, например, в случае, когда метод factory завершает инициализацию объекта после построения объекта.