一般的に、Rubyでオブジェクト同士を==で比較すると、オブジェクトIDの比較となる。 ==を再定義してある場合は例外で、例えばStringは文字列の内容が比較される。 ではArrayやHashはどうなのか。 実はArrayやHashを==すると中身の比較が行われる。 よって以下のような比較が可能である。 単純なHashとArrayはもちろんのこと、複雑に構成されたオブジェクトもこのとおりだ。 p [1, 2, 3] == [1, 2, 3] #=> true p ({a:1, b:2, c:3} == {a:1, b:2, c:3}) #=> true p ([{a:1, b:2}, {array:[3, 4, 5]}] == [{a:1, b:2}, {array:[3, 4, 5]}]) #=> true 私は何となくオブジェクトIDの比較になりそうな気がして、無意識のうちにこのよう