如何检查一个variables是否是一个类的实例?
在Java中,你可以做instanceof
。 有一个Ruby的等价物吗?
几乎完全一样。 你可以使用Object
的instance_of?
方法:
"a".instance_of? String # => true "a".instance_of? Object # => false
Ruby还有is_a?
和kind_of?
方法(这两个是别名,工作原理完全相同),返回true
是超类匹配中的一个:
"a".is_a? String # => true "a".is_a? Object # => true
kind_of?
和is_a?
是同义词。 他们是Ruby的等同于Java的instanceof
。
instance_of?
不同之处在于,如果对象是该确切类的实例,而不是子类,则只返回true
。
看看instance_of?
和kind_of?
方法。 这里是文档链接http://ruby-doc.org/core/classes/Object.html#M000372
我已经成功与klass
,它返回类对象。 这似乎是Rails特定的。
示例用法:
class Foo end Foo.new.klass # => Foo Foo.new.klass == Foo # => true Foo.new.klass == "Foo" # => false
还有一个方法来完成这个: Object.is_a?
,它将类对象作为参数,如果self
是类的实例或子类的实例,则返回true。