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