例如,我正在从cli上传递的参数中动态定义模块名称 Required::Module::#{ARGV.first}
有没有办法检查该模块是否存在?另外,我怎么会在它上面运行方法而不知道它的确切名称?
hor*_*guy 35
使用const_defined?
此.
Required::Module.const_defined?(:ModuleName)
Run Code Online (Sandbox Code Playgroud)
返回true或false.
And*_*imm 14
defined?(Required::Module)
Run Code Online (Sandbox Code Playgroud)
"constant"
如果存在nil
则给出,如果不存在则给出.
更新:对不起,没有正确阅读您的问题.
defined?(eval("Required::Module::"+string))
Run Code Online (Sandbox Code Playgroud)
应该给你你想要的东西.
Dan*_*ara 10
使用以下const_get
方法检查模块是否存在:
begin
mod = Required::Module::const_get "ModuleName"
#It exists
rescue NameError
#Doesn't exist
end
Run Code Online (Sandbox Code Playgroud)