为了账号安全,请及时绑定邮箱和手机立即绑定

Ruby:kind_of?与instance_of?与is_a?

Ruby:kind_of?与instance_of?与is_a?

暮色呼如 2020-02-03 15:18:06
有什么区别?我什么时候应该使用哪个?为什么有这么多?
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

有什么区别?


从文档中:


-(布尔)instance_of?(class)

返回trueif obj是给定类的实例。

和:


-(布尔值)is_a?(class)

-(布尔值)kind_of?(class)

返回trueif class是的类obj,或者class是包含的的超类之一obj或模块之一obj。

如果不清楚,最好弄清楚到底是什么还不清楚,以便可以改进文档。


我什么时候应该使用哪个?


决不。请改用多态。


为什么有这么多?


我不会叫两个 “很多”。它们有两个,因为它们做两种不同的事情。


查看完整回答
反对 回复 2020-02-03
?
jeck猫

TA贡献1909条经验 获得超7个赞

使用,更像Ruby询问对象是否响应您需要的方法respond_to?。这允许最少的界面和不带意识的编程实现。


当然,它并不总是适用的,因此,仍然有可能使用您要询问的方法来询问对“类型”(类或基类)的更保守的理解。


查看完整回答
反对 回复 2020-02-03
  • 3 回答
  • 0 关注
  • 1002 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信