是否可以通过专门命名函数(也就是整个模块)将函数从模块中提取到ruby中的全局命名空间?
我有一个最初没有使用模块的模块,我想将类/方法移动到一个模块中,但仍然保留一个模块,该模块将具有全局级别的所有内容以实现兼容性。到目前为止,我有这个。
# graph.rb
require 'foo_graph'
include foo
# foo_graph.rb
module foo
# contents of the old graph.rb
end
但是模块foo
也在完全不相关的文件中使用,并且调用include
可能会将更多内容输入到全局命名空间中。
我有没有办法指定我想用include
引入哪些功能,还是可以选择做我想做的事情?
答案 0 :(得分:2)
使用子模块。
module Foo
module Bar
def bar_method; end
end
include Bar
module Baz
def baz_method; end
end
include Baz
end
# only include methods from Bar
include Foo::Bar
bar_method
#=> nil
baz_method
#=> NameError: undefined local variable or method `baz_method' for main:Object
include Foo
# include all methods from Foo and submodules
baz_method
#=> nil