Вопрос

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top