Как мне «потребовать» в текущем объеме? - PullRequest
2 голосов
/ 27 декабря 2011

Я не уверен на 100%, как работает область видимости переменной Ruby, и у меня возникают проблемы с использованием оператора require "path.rb". Вот фрагмент кода, который вызывает проблему:

Файл a.rb:

a = {
        :hey => "ho"
    }

require "path/to/b.rb" # => true

Файл b.rb:

b = "harhar"
a[:test] = b

Область действия a.rb находится внутри модуля :: class, а не основной глобальной области, и когда я пытаюсь получить доступ к переменной a в b.rb, я получаю сообщение об ошибке, говоря, что переменная a isn ' т в текущем объеме.

Я где-то читал о том, что включенные файлы находятся в их собственной области видимости, чтобы не конфликтовать, если так, каково соглашение обойти это?

1 Ответ

2 голосов
/ 27 декабря 2011

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

...