В Ruby считывание и запись на @instance
переменных (и переменных) объекта должно выполняться с помощью метода на этом объекте. Например:
class TestClass
@@variable = "var"
def self.variable
# Return the value of this variable
@@variable
end
end
p TestClass.variable #=> "var"
Ruby имеет некоторые встроенные методы для создания простых методов доступа для вас. Если вы будете использовать переменную экземпляра в классе (вместо переменной класса):
class TestClass
@variable = "var"
class << self
attr_accessor :variable
end
end
Ruby On Rails предлагает a convenience method специально для переменных класса:
class TestClass
mattr_accessor :variable
end
Вы имели в виду 'cattr_accessor'? :) –
cattr_accessor - лучшее имя, но это просто псевдоним для mattr_accessor (по ссылке, которую я дал). – Phrogz
Также в качестве примечания это не должно иметь метода доступа, поскольку «Object # instance_variable_get» разрешает доступ ко всем переменным экземпляра ('@'), а 'Object # class_variable_get' предлагает то же самое для переменных класса (' @@ ') без необходимость в явном способе получения, например 'TestClass.instance_variable_get (: @ variable)' или 'TestClass.class_variable_get (: @@ variable)' – engineersmnky