Могу ли я инициализировать переменную класса, используя глобальную переменную? (Рубин) - PullRequest
1 голос
/ 28 февраля 2010

Должен ли я создать дополнительный метод для этого вида задания? @@variable = @global_variable Почему? Я хочу, чтобы некоторые переменные, которые содержат значения и определения, были доступны через мой сценарий и имели только одно место определения.

@global_variable = 'test'

class Test

@@variable = @global_variable

  def self.display
    puts @@variable
  end
end

Test.display #gives nil

1 Ответ

8 голосов
/ 28 февраля 2010

В Ruby глобальные переменные имеют префикс $, а не @.

$global = 123

class Foo
    @@var = $global
    def self.display
        puts @@var
    end
end

Foo.display

правильно выводит 123.

Что вы сделали, так это присвоили переменную экземпляра классу Module или Object (не уверен, какой именно); эта переменная экземпляра не входит в область действия определенного вами класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...