Область переменных уровня экземпляра, создаваемая заново для каждого экземпляра класса. Например, переменная @id
, вероятно, должна быть уникальной для каждого экземпляра Foo
. Однако могут быть некоторые значения, которые должны быть одинаковыми для каждого экземпляра типа. В этом случае переменная класса будет более подходящей.
Одним важным побочным эффектом переменных уровня класса является то, что они также являются общими для производных классов . Это означает, что изменение значения в подклассе 'Foo' изменит его также и для объектов 'Foo'. Это может быть то, что вы хотите, но может быть немного удивительно узнать трудный путь.
Например:
class Foo
@@some_var = 1
def bar
puts(@@some_var)
end
end
class Baz < Foo
def perhaps_unexpected
@@some_var = 10
Foo.new.bar #prints '10'
end
end