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.

Tags:

Ruby