2008-08-30 4 views
6

Existe-t-il un équivalent Ruby pour "is" de Python? Il teste si deux objets sont identiques (c'est-à-dire ont le même emplacement de mémoire).Ruby "est" équivalent

Répondre

12

Utilisez a.equal? b

http://www.ruby-doc.org/core/classes/Object.html

Contrairement ==, l'égal? La méthode ne doit jamais être ignorée par les sous-classes: elle est utilisée pour déterminer l'identité de l'objet (c'est-à-dire a.equal? ​​(b) ssi a est le même objet que b).

2

Vous pouvez également utiliser __id__. Cela vous donne le numéro d'identification interne des objets, qui est toujours unique. Pour vérifier si les objets sont les mêmes, essayez

a.__id__ = b.__id__

Voici comment la bibliothèque standard de Ruby on fait autant que je peux dire (voir group_by et d'autres).

Questions connexes