Ruby "instance variable not initialized" warning
In addition to Matchu's suggestion, you can also use defined?
to initialize @head
lazily here without provoking the warning:
if defined? @head
...
else
@head = new_node
end
The normal idiom for this sort of thing is
@head ||= new_node
which will also not provoke the warning, but in this case it seems like you need to do something if @head
wasn't defined, and it's not idempotent so ||=
is not going to work very well in this case. ||=
also has the disadvantage of not being able to distinguish between false, nil or unset. Initializing to nil
in initialize is probably the best choice.
You could declare @head
as nil
in the initialize
method, for one.