无法从所有文件访问模块变量

时间:2014-09-20 12:25:25

标签: ruby module

我有一个跨越模块的ruby应用程序:称之为Bacon

module Bacon
    @@foo = nil
    def self.set_foo(info)
        @@foo = SomeClass.new(info)
    end
    def self.get_foo
        return @@foo
    end

    class SomeClass
        attr_accessor :info
        def initialize(info)
            @info = info
        end
    end
end

Bacon::set_foo("Secret!")
puts Bacon::get_foo.info

这一切都很好。但是,如果我想使用Bacon::get_foo从其他文件访问require_relative并启动OtherClass实例,如下所示:

module Bacon
    class OtherClass
        def initialize
            puts Bacon::get_foo.info
        end
    end
end

我明白了:

  

nil的未定义方法`info':NilClass

我的印象是,当在多个文件中使用模块时,所有变量和值都在它们之间共享。在所有OtherClass可以看到方法get_foo之后,只有@@foo中没有存储任何值。

有人可以解释一下吗?如果有更好的方法(在整个模块中可以访问类实例)。

0 个答案:

没有答案