Ruby が返す値の順序はHash::each_value{ |val| block }
何らかの形で定義されていますか? つまり、特定のハッシュの場合、ループの反復における値の順序は常に*同じですか?
配列の値とは異なり、ハッシュのキーと値のペアはソートされていないため、そうなのだろうか。
次の例を考えます。
myhash = { :a => 100, :b => 200, :z => 9, :e => 101 }
myhash.each_value { |val|
puts val
}
Rubyは常に*印刷を保証しますか
100
200
9
101
定義されている場合のボーナス質問:
注文が定義される前提条件は何ですか? 例としてハードコーディングされたハッシュにのみ適用されますか?
[*]: 「常に」は、「各実行時、および Ruby 1.9+ が動作しているシステムでは」として読み取られる必要があります。