我有一个对象数组:
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 等式和对象比较”。