拥有以下模块:
module Foo
end
我们如何在这个Foo
模块中添加另一个模块的名称(例如:name = 'Bar'
)?
我想动态地得到这个:
module Foo
module Bar
end
end
答案 0 :(得分:4)
没有(丑陋的)字符串评估:
module Foo
end
bar = Module.new
Foo.const_set(:Bar, bar)
答案 1 :(得分:1)
这很简单:
module Foo
end
name = 'Bar'
Foo.class_eval <<RUBY
module #{name}
end
RUBY
puts Foo::Bar
# >> Foo::Bar
答案 2 :(得分:-2)
你只需写下来:
# In some part of your codebase:
module Foo
end
# Extension:
module Foo
module Bar
end
end