如何将字符串转换为类名,但仅限于该类已存在?
如果Amber 已经是一个类,我可以通过以下方式从字符串到类:
Object.const_get("Amber")
Run Code Online (Sandbox Code Playgroud)
或(在Rails中)
"Amber".constantize
Run Code Online (Sandbox Code Playgroud)
但NameError: uninitialized constant Amber如果Amber还没有上课,那么其中任何一个都会失败.
我的第一个想法是使用该defined?方法,但它不区分已存在的类和不存在的类:
>> defined?("Object".constantize)
=> "method"
>> defined?("AClassNameThatCouldNotPossiblyExist".constantize)
=> "method"
Run Code Online (Sandbox Code Playgroud)
那么在我尝试转换之前,如何测试字符串是否命名一个类?(好吧,begin/ rescueblock如何捕获NameError错误?太丑了?我同意......)