如何将字符串转换为类名,但前提是该类已经存在?
如果Amber是already a类,我可以通过以下方式从字符串到类:
Object.const_get("Amber")
或者(在轨道上)
"Amber".constantize
但是,如果Amber还不是一个类,这两个选项中的任何一个都会以NameError: uninitialized constant Amber
分的成绩失败.
我的第一个 idea 是使用defined?
方法,但它不区分已经存在的类和不存在的类:
>> defined?("Object".constantize)
=> "method"
>> defined?("AClassNameThatCouldNotPossiblyExist".constantize)
=> "method"
那么,在我try 转换一个类之前,如何测试一个字符串是否命名了它?(好吧,用begin
/rescue
块来捕捉名称错误怎么样?太难看了?我同意…)