У этого безумия есть метод...
class Example
@foo # class instance variable
@@bar # class variable
def fun1
@baz # instance variable
end
end
Переменные экземпляра
Переменные экземпляра (в примере @foo
и @baz
) всегда начинаются с @
и они всегда принадлежат любому объекту, на который ссылается self: либо объекту класса, либо классу объект, представляющий класс. Ссылка на переменную экземпляра в определении класса или методе класса полностью отличается от ссылки на переменную экземпляра в методе экземпляра.
Наследование
Поскольку переменные экземпляра не определяются классом, они не связаны с механизмом наследования — они просто создаются, когда им присваивается значение. Таким образом, переменные экземпляра класса, будучи просто переменными экземпляра объекта класса, представляющего класс, не наследуются.
Переменные класса
Переменные класса видны и совместно используются методами класса и методами экземпляра класса, а также самим определением класса. Переменные класса могут использоваться в методах экземпляра, методах класса и в самом определении класса вне любого метода. Переменные класса всегда оцениваются по отношению к объекту класса, созданному прилагаемым оператором определения класса.
Переменная экземпляра класса против переменной экземпляра
Недостатком переменных экземпляра класса является то, что их нельзя использовать в методах экземпляра, как это могут делать переменные класса. Другим недостатком является возможность спутать их с обычными переменными экземпляра. Преимущество переменных экземпляра класса над переменными класса связано с запутанным поведением переменных класса при создании подкласса существующего класса: если класс использует переменные класса, то любой подкласс может изменить поведение класса и всех его потомков, изменив значение общей переменной класса. Это сильный аргумент в пользу использования переменных экземпляра класса вместо переменных класса.
Многое из этого взято из отличного "Язык программирования Ruby"
![альтернативный текст](https://i.stack.imgur. com/u4Mq1.jpg)
person
JRL
schedule
08.04.2010