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