尝试动态包含一个模块:
module_name = "Foo"
extend {#module_name} # Wanting to do `extend Foo` dynamically
它不会作为参数传递
wrong number of arguments (0 for 1+)
关于如何做到这一点的任何想法?
尝试动态包含一个模块:
module_name = "Foo"
extend {#module_name} # Wanting to do `extend Foo` dynamically
它不会作为参数传递
wrong number of arguments (0 for 1+)
关于如何做到这一点的任何想法?
在纯红宝石中,你可以做
extend Object.const_get(module_name)
或者不太漂亮的方法,比如
eval "extend #{module_name}"
您可以为此使用activesupport gem 和String#constantize方法:
require 'active_support/inflector'
module_name = 'Foo'
extend module_name.constantize
module_name = "Foo"
eval "extend #{module_name}"
或者
require 'active_support/inflector'
module_name = "Foo"
extend module_name.constantize
或者
module_name = "Foo"
extend Object.const_get(module_name)