zak*_*o42 4 ruby meta ruby-on-rails
我有一个用一堆类方法定义的实用程序类.在Rails控制台中,当我使用Object.const_defined?它搜索类时返回false.但在调用其中一个类方法或创建该类的实例后,Object.const_defined?返回true.这是因为某种延迟加载实例化的事情吗?有没有其他方法可以检查是否存在将返回true的类,即使我还没有实例化任何东西?
这有点像黑客,但它确实有效
Object.const_get(:ClassName).is_a?(Class) rescue false
Run Code Online (Sandbox Code Playgroud)
如果定义了类,则上面的语句将返回true,否则返回false
小智 6
您可以使用safe_constantize.
your_class = "YourClassName".safe_constantize
if your_class && your_class.class == Class
your_class.new(options).run
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2941 次 |
| 最近记录: |