如何测试秩序意识的哈希平等

Spa*_*awk 4 ruby hash equality ordereddictionary

Ruby 1.9.2将顺序引入哈希.考虑到顺序,我如何测试两个哈希值是否相等?

鉴于:

h1 = {"a"=>1, "b"=>2, "c"=>3}
h2 = {"a"=>1, "c"=>3, "b"=>2}
Run Code Online (Sandbox Code Playgroud)

我想要一个返回falsefor h1和的比较运算符h2.以下两点都不起作用:

h1 == h2 # => true
h1.eql? h2 # => true
Run Code Online (Sandbox Code Playgroud)

saw*_*awa 6

可能最简单的方法是比较相应的数组.

h1.to_a == h2.to_a
Run Code Online (Sandbox Code Playgroud)

  • 这是IMO比接受的答案更可取,因为它还检查值的等价性. (2认同)