Ruby中的"is"等价物

9 投票
2 回答
507 浏览
提问于 2025-04-11 09:13

在Ruby中,有没有类似于Python里“is”的东西?这个“is”用来检查两个对象是否完全相同,也就是说,它们是不是在内存中占据同一个位置。

2 个回答

2

你也可以使用 __id__。这个东西会给你对象的内部ID号码,这个号码是唯一的。要检查两个对象是否相同,可以试试下面的方式:

a.__id__ = b.__id__

根据我的了解,这就是Ruby标准库的做法(可以看看 group_by 以及其他的)。

13

使用 a.equal? b

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

跟 == 不一样,equal? 这个方法不应该被子类重写:它是用来判断对象是否相同的(也就是说,只有当 a 和 b 是同一个对象时,a.equal?(b) 才会返回真)。

撰写回答