В дополнение к предложению Matchu, вы также можете использовать defined?
для ленивой инициализации @head
здесь, не вызывая предупреждения:
if defined? @head
...
else
@head = new_node
end
Обычная идиома для такого рода вещей
@head ||= new_node
, что также не вызовет предупреждения, но в этом случае кажется, что вам нужно что-то сделать, если @head
не было определено, и это не идемпотентно, поэтому ||=
не будет работать очень хорошо вэтот случай.||=
также имеет недостаток, заключающийся в том, что он не может различить false, nil или unset.Инициализация nil
при инициализации, вероятно, лучший выбор.