Class variables in RubyEdit
Differences between class variables and instance variables:
@@foo: shared by a class and all its subclasses@foo:- on an instance method, becomes an instance variable
- on a class method (or an instance method of a metaclass), becomes a class variable visible only to the class (ie. not shared with subclasses)
Example:
class Parent
@@foo = 1
class << self
def bar
@bar ||= 10
end
end
end
class Child < Parent
def foo
@@foo # returns 1, the value of @@foo from the superclass
end
def self.bar
@bar ||= 20 # not shared with superclass
end
end
Parent.bar # => 10
Child.bar # => 20