Доступ к переменным класса?
-
09-10-2019 - |
Вопрос
class Foo
@@default = "default"
p instance_variables
p class_variables
class << self
p instance_variables
p class_variables
# How do I access the @@default variable here?
end
end
Решение
Так же, как вы делаете это в любом другом месте: @@default
.
Я не уверен, что p ..
Предполагается (Ruby не мой родной язык), но это работает
class Foo
@@default = "default"
class << self
puts "#{@@default}"
end
end
Другие советы
Этот вопрос вроде интересного, потому что это по сути спрашивает «Есть ли у MetAclass для ссылки на его« реальный »класс?
И, насколько я могу сказать, ответ - «нет», потому что все указатели «восходящего» предка Ruby сохраняют также указывать на метаклассы и так бегают class_variables()
в одном из них расскажу вам о его Переменные экземпляра класса. Отказ Итак, вы должны ссылаться на объекты по имени или просто установить ручку, прежде чем войти в метакласский контекст ...
class Foo
@@default = "default"
@@me = self
p instance_variables
p class_variables
class << self
p instance_variables
p @@me.class_variables
end
end
Не связан с StackOverflow