>>>>> "A" == Austin Ziegler <austin / halostatue.ca> writes: A> What is the problem that @_ variables are trying to solve? Well, if I remember correctly the original proposition one of the problem can be summarized with this stupid example. Imagine that someone define a module which implement a counter, he'll write something like module A def increment @counter ||= 0 @counter += 1 end def get @counter end end because the instance variable @counter is used only to remember some internal state, this variable is never documented and in the documentation there is only a reference to #increment and #get Now someone else use this nice module from RAA and write class B include A def initialize @counter = "counter" # he don't know that this variable is used end end He has completely broken the module A. You don't have this problem with class local variable because * when you call a method of A : @_counter is a fixnum * when you call a method of B : @_counter is a string Guy Decoux