我如何“要求”进入当前范围?

时间:2011-12-26 20:25:30

标签: ruby scope require

我不是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的范围在module :: class中,而不是主要的全局范围,当我尝试访问a中的b.rb变量时,我收到一个错误,说明a变量不在当前范围内。

我在某处读到了包含在自己范围内的文件,以免发生冲突,如果是这样,那么解决这个问题的惯例是什么?

1 个答案:

答案 0 :(得分:2)

顶级本地变量是文件的本地变量。您应该使用实例变量,模块变量,方法,常量或全局变量来代替使用本地变量 - 这些变量在程序中的所有位置都可见。 (您要使用哪一个取决于具体情况。在某些情况下,每种存储数据的方式都比其他方式更有意义。)