如何检查一个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。