>>>>> "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