私はオブジェクトの配列を持っています:
array = [ Obj1, Obj2, Obj3 ]
テーブルObj1
からクエリする場合:Objects
obj1 = Objects.get(1)
Obj1
とはobj1
同じオブジェクトですが、比較すると次のようになりますfalse
。
array[0].eql? obj1 # false
メモリ内の同じ場所を指していない 2 つのオブジェクトを比較する最良の方法は何ですか?
私はオブジェクトの配列を持っています:
array = [ Obj1, Obj2, Obj3 ]
テーブルObj1
からクエリする場合:Objects
obj1 = Objects.get(1)
Obj1
とはobj1
同じオブジェクトですが、比較すると次のようになりますfalse
。
array[0].eql? obj1 # false
メモリ内の同じ場所を指していない 2 つのオブジェクトを比較する最良の方法は何ですか?
実際には、これらの同じタイプのオブジェクトが所有する値のこの種の比較では、独自の比較演算子 like<=>
または好きな記号を定義する必要がありますが、 のようなデフォルトの演算子をオーバーライドしないでください==
。それは問題につながる可能性があります。
「Ruby の等価性とオブジェクトの比較」を参照してください。