Mark J. Reed wrote:
> .. . . which are not inherited, which is why it is surprising to many
> that  Ruby's @@variables are inherited.

I'm one of them too.  Is there a reason that they're implemented the way 
they are?  Is it ease of implementation?  Based on a different OO 
paradigm?  To me it violates the Principle of Least Surprise.

If I create a class inheriting from FooBar, it seems to me that it's 
dangerous that I can break FooBar and all of its other subclasses by 
doing what appears to be "declaring a class variable" because in reality 
I'm "changing a class variable defined in a superclass".

Ben