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

Почему `a = a`` nil` в Ruby?

Я смотрел этот видео. Почему a = a оценивается как nil, если a не определено?

a = a # => nil
b = c = q = c # => nil
4b9b3361

Ответ 1

Ruby-интерпретатор инициализирует локальную переменную с nil, когда видит назначение. Он инициализирует локальную переменную до того, как она выполнит выражение присваивания, или даже когда назначение недоступно (как в примере ниже). Это означает, что ваш код инициализирует a с помощью nil, а затем выражение a = nil будет оценивать значение правой руки.

a = 1 if false
a.nil? # => true

Первое выражение присваивания не выполняется, но a инициализируется nil.