kind_of? is_a? and instance_of?

1 分钟 阅读

kind_of? and is_a?

Ruby中判断一个Class是否是某一Class或者某一Class的子类,可以用kind_of?, is_a?。两个方法都可以用,那这两个方法有什么不同吗?

两个方法其实是同一个方法,只是名字不同而已。

Returns true if class is the class of obj, or if class is one of the superclasses of obj or modules included in obj.

instance_of?

instance_of?用来判断某个对象是不是某一个类的实例,必须是直接类,父类或者继承链上的module都会返回false

class A;     end
class B < A; end
class C < B; end

b = B.new
b.instance_of? A   #=> false
b.instance_of? B   #=> true
b.instance_of? C   #=> false

2014年第一篇,Happy New Year!

分类:

最新的:

留下评论