2008-08-30 9 views
6

Gibt es ein Ruby-Äquivalent für Pythons "ist"? Es testet, ob zwei Objekte identisch sind (d. H. Die gleiche Speicherstelle haben).Ruby "ist" gleichwertig

Antwort

12

Verwenden a.equal? b

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

Im Gegensatz zu ==, das gleich? Methode sollte nie von Unterklassen überschrieben werden: sie wird verwendet, um die Objektidentität zu bestimmen (dh a.gleich? (b) wenn a dasselbe Objekt wie b ist).

2

Sie können auch __id__ verwenden. Dies gibt Ihnen die Objekte interne ID-Nummer, die immer eindeutig ist. Um zu überprüfen, ob auf Objekte gleich sind, versuchen

a.__id__ = b.__id__

Dies ist, wie Rubys Standardbibliothek hat es, soweit ich das beurteilen kann (siehe group_by und andere).