Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby:kind_of?与instance_of?与is_a?

Ruby:kind_of?与instance_of?与is_a?

提问于 2017-12-22 08:52:16
回答 2关注 0查看 1.9K

有什么不同?我应该什么时候使用哪个?为什么有这么多呢?

回答 2

akjok54

发布于 2017-12-22 09:15:28

我也不会调用两个多(is_a?和kind_of?是同一方法的别名),但如果你想看到更多的可能性,将注意力转移到#class方法:

代码语言:txt
AI代码解释
复制
A = Class.new
代码语言:txt
AI代码解释
复制
B = Class.new A
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
a, b = A.new, B.new
代码语言:txt
AI代码解释
复制
b.class < A # true - means that b.class is a subclass of A
代码语言:txt
AI代码解释
复制
a.class < B # false - means that a.class is not a subclass of A
代码语言:txt
AI代码解释
复制
# Another possibility: Use #ancestors
代码语言:txt
AI代码解释
复制
b.class.ancestors.include? A # true - means that b.class has A among its ancestors
代码语言:txt
AI代码解释
复制
a.class.ancestors.include? B # false - means that B is not an ancestor of a.class

御姐万岁

发布于 2017-12-22 09:15:03

kind_of?并且is_a?是同义词。instance_of?与其他两个不同的是,只有true当对象是一个确切的类的实例,而不是子类时才会返回。

例如:"hello".is_a? Object和"hello".kind_of? Object返回true因为"hello"是String和String是它的一个子类Object。但是,"hello".instance_of? Object返回false。

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
腾讯 | 技术专家擅长2个领域
高级数据分析师擅长5个领域
萃橙科技 | 合伙人擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档