Hi --

I figure that I owe the world at least a shot at clearing the cobwebs
(of my own creation, that is :-) on this instance variable thing.  

So... for those still reading... here's what I *really* think is being
proposed:


class A
  def m
    @var  = "hi"          # regular instance variable
    @_var = "hello"       # class-local instance variable
  end
end

class B < A
  def n
    puts @var             # same as @var, above
    puts @_var            # not same as @_var above
  end
end                       

o = B.new
o.m
o.n

=> Output:

   hi      # the @var that was set in A#m is used here
   nil     # the @_var that was in A#m is *not* used here
           # (because we're now in a method defined in B,
           # a subclass of A, and class local instance
           # variables are not shared by subclasses)

In other words: 

  * Regular instance variables live per-name per-object
    (o has exactly one @var).  

  * Class-local instance variables live per-name per-object per-class
    (o's methods defined in A have a @_var, and o's methods defined in
    B have a different @_var).


David

-- 
David A. Black
dblack / wobblini.net