在Java中,您可以instanceof
。是否有Ruby等价物?
答案 0 :(得分:121)
几乎完全一样。您可以使用Object
的{{1}}方法:
instance_of?
Ruby还有"a".instance_of? String # => true
"a".instance_of? Object # => false
和is_a?
方法(这两个是别名,并且工作完全相同),返回kind_of?
是超类匹配之一:
true
答案 1 :(得分:11)
kind_of?
和is_a?
是同义词。它们相当于Java的instanceof
。
instance_of?
的不同之处在于,如果对象是该类的实例,而不是子类,它只返回true
。
答案 2 :(得分:6)
请查看instance_of?
和kind_of?
方法。这是文档链接http://ruby-doc.org/core/classes/Object.html#M000372
答案 3 :(得分:5)
我使用klass
取得了成功,它返回了类对象。这似乎是Rails特有的。
样本用法:
class Foo
end
Foo.new.klass
# => Foo
Foo.new.klass == Foo
# => true
Foo.new.klass == "Foo"
# => false
还有一种方法可以实现这一点:Object.is_a?
,它将类对象作为参数,如果self
是类的实例或子类的实例,则返回true。