En Java, vous pouvez faire instanceof
. Existe-t-il un Ruby équivalent?
C'est presque exactement pareil. Vous pouvez utiliser Object
's instance_of?
méthode:
"a".instance_of? String # => true
"a".instance_of? Object # => false
Ruby a également le is_a?
et kind_of?
méthodes (ces 2 sont des alias et fonctionnent exactement de la même façon), qui renvoie true
est l'une des correspondances de superclasses:
"a".is_a? String # => true
"a".is_a? Object # => true
kind_of?
et is_a?
sont synonymes. Ils sont l'équivalent de Ruby au instanceof
de Java.
instance_of?
est différent en ce qu'il ne renvoie true
que si l'objet est une instance de cette classe exacte, pas une sous-classe.
Regardez instance_of?
et kind_of?
méthodes. Voici le lien doc http://Ruby-doc.org/core/classes/Object.html#M000372
J'ai eu du succès avec klass
, qui retourne l'objet classe. Cela semble être spécifique à Rails.
Exemple d'utilisation:
class Foo
end
Foo.new.klass
# => Foo
Foo.new.klass == Foo
# => true
Foo.new.klass == "Foo"
# => false
Il existe également une méthode qui accomplit cela: Object.is_a?
, qui prend l'objet classe comme argument et renvoie vrai si self
est une instance de la classe ou une instance d'une sous-classe.