2015-01-26 3 views

ответ

3

Глобальные переменные являются глобальными, что означает, что даже если вы поместите их в класс, который очень специфичен для области, они все еще доступны повсюду. Они также явно являются переменными (что не должно удивлять, если меняется их значение).

Например:

module TopLevel 
    module MiddleLevel 
    module LowLevel 
     class SpecificSomething 

     $my_global = "duff man says a lot of things" 

     end 
    end 
    end 
end 


module TopLevel 
    def self.global 
    p $my_global 
    end 
end 

TopLevel.global 
#=> "duff man says a lot of things" 

Константы доступны, где они определены - то есть, они не являются глобальными. Они также являются константами (поскольку ссылка, которую вы указали, указывает), поэтому НЕ ожидайте, что они изменятся (хотя рубин действительно позволяет их изменять).

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