2010-02-27 14 views
1

У меня есть дополнительный метод для такого рода присвоений? @@variable = @global_variable Почему? Я хочу иметь некоторые переменные, которые хранят значения и определения для доступа через весь мой сценарий и имеют только одно место определения.Можно ли инициализировать переменную класса с помощью глобальной переменной? (ruby)

@global_variable = 'test' 

class Test 

@@variable = @global_variable 

    def self.display 
    puts @@variable 
    end 
end 

Test.display #gives nil 

ответ

8

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

$global = 123 

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

Foo.display 

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

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

+2

Фактически OP устанавливает переменную экземпляра на «основной объект». – sepp2k

+0

@Mark Rushakoff: вы правы. Спасибо. Работает даже '@@ variable = @@ global_variable'. – Radek

Смежные вопросы