我想用一个模块扩展一个 Ruby 对象,但我希望能够在运行时更改要使用的模块,并且能够通过对象来改变它。换句话说,我想将模块的名称extend
作为参数传递给。我怎样才能做到这一点?
我尝试了以下方法:
module M1
end
module M2
end
class C
def initialize module_to_use
extend module_to_use
end
end
m = get_module_name_from_config_file
c1 = C.new m
(假设该方法get_module_name_from_config_file
返回String
带有所需模块名称的 a - 此处为"M1"
或"M2"
。)
但我明白了:
error: wrong argument type String (expected Module).
因为m
是 type String
,不是Module
,很明显。我也尝试将它m
作为一个符号,但我遇到了同样的问题(在错误消息中替换为)String
。Symbol
那么,我可以转换m
成某种类型的东西Module
吗?还是有另一种方法可以实现这一目标?
提前致谢。