我有一个跨越模块的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
中没有存储任何值。
有人可以解释一下吗?如果有更好的方法(在整个模块中可以访问类实例)。