Доступ к переменным класса модуля внутри класса в Ruby

У меня есть модуль с переменной класса в нем

module Abc
  @@variable = "huhu"

  def self.get_variable
    @@variable
  end

  class Hello
    def hola
      puts Abc.get_variable
    end
  end
end

a = Abc::Hello.new
a.hola

Можно ли получить @@variable внутри Hello без использования метода get_variable? Я имею в виду, что что-то вроде Abc.variable было бы неплохо. Просто любопытно.


person huhucat    schedule 26.07.2011    source источник


Ответы (2)


Вы не можете получить доступ к @@variable напрямую (т. е. Abc.variable) в рамках класса Hello в модуле Abc. Почему? Потому что, когда интерпретатор Ruby увидит что-то вроде Abc.variable, он подумает, что variable является методом класса/модуля Abc.

При программировании на Ruby важно мыслить в стиле Ruby.

person karthiks    schedule 26.07.2011
comment
Примечание: если вы хотите в значительной степени избавиться от подобных мыслей, я поделился своими знаниями на недавно прошедшей конференции Ruby Conf India 2011. Пожалуйста, не стесняйтесь посмотреть мой доклад на kartzontech.blogspot.com/2011/06/ruby-conf-india-2011.html и дайте рейтинги и отзывы. Самое главное, прочитайте последний из слайдов, где я упомянул ресурсы, которые помогли сформировать мое мышление в стиле Ruby. - person karthiks; 26.07.2011

попробуй это

Abc.class_variable_get(:variable)
person Dileep    schedule 31.03.2014
comment
Пожалуйста, расширьте свой код или дополните объяснение, иначе вы рискуете удалить свой ответ модераторами. - person sshashank124; 31.03.2014