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

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

37 голосов
/ 18 января 2012

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

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

1 Ответ

56 голосов
/ 18 января 2012

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

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

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

...