首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不实例化Ruby中的A对象的情况下确定A类是否继承自B类?

如何在不实例化Ruby中的A对象的情况下确定A类是否继承自B类?
EN

Stack Overflow用户
提问于 2011-03-07 02:55:33
回答 3查看 3.4K关注 0票数 19

假设我想确定Admin是否继承自ActiveRecord::Base。一种方法是使用Admin.new.kind_of? ActiveRecord::Base,但它会实例化一个未使用的Admin对象。

有没有一种简单的方法可以不用创建Admin对象就能做到这一点?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-07 02:57:26

当然,只需比较这两个类:

代码语言:javascript
复制
if Admin < ActiveRecord::Base
  # ...
end

有趣的是,如果AdminAR::Base继承,则Module#<将返回true,如果不是这样,它将返回falsenilfalse意味着它是相反的,而nil用于不相关的类(例如,String < Range返回nil)。

票数 29
EN

Stack Overflow用户

发布于 2011-03-07 02:59:52

这很简单:

代码语言:javascript
复制
Admin < ActiveRecord::Base
=> true
票数 9
EN

Stack Overflow用户

发布于 2011-03-07 02:57:27

代码语言:javascript
复制
Admin.ancestors.includes? ActiveRecord::Base

对于直系祖先,您还可以使用

代码语言:javascript
复制
Admin.superclass == ActiveRecord::Base
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5212657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档