我有一个对象数组:
array = [ Obj1, Obj2, Obj3 ]
如果我Obj1
从Objects
表中查询:
obj1 = Objects.get(1)
两者Obj1
和obj1
都是相同的对象,但是当我比较它们时,我得到false
:
array[0].eql? obj1 # false
当两个对象没有指向内存中的同一位置时,比较两个对象的最佳方法是什么?
我有一个对象数组:
array = [ Obj1, Obj2, Obj3 ]
如果我Obj1
从Objects
表中查询:
obj1 = Objects.get(1)
两者Obj1
和obj1
都是相同的对象,但是当我比较它们时,我得到false
:
array[0].eql? obj1 # false
当两个对象没有指向内存中的同一位置时,比较两个对象的最佳方法是什么?
实际上,对于这些相同类型的对象所拥有的值的这些类型的比较,您需要定义自己的比较运算符 like<=>
或任何您喜欢的符号,但不要覆盖默认运算符 like ==
。这可能会导致问题。
请参阅“ Ruby 等式和对象比较”。