From: "内山紀明" Date: 2007-08-18T23:35:10+09:00 Subject: [ruby-list:43859] Re: Hashへの生成順は保障されないのか? はじめまして,内山と申します. > の順になってしまいました。できれば生成していった順で > 表示されるとよいのですが、hashの中身はどのような基準で Hashクラスを継承したクラスを定義してはいかがでしょうか. 例えば,以下のようにOrderedHashクラスを定義します. class OrderedHash < Hash def initialize @index = [] end def []=(key, val) @index.push(key) super(key, val) end def each @index.each do |key| yield(key, self[key]) end self end end []=とeachメソッドをオーバーライドしています. 結果として以下のようになります. >> pair = OrderedHash.new => {} >> pair["apple"]="apple" => "apple" >> pair["and"]="and" => "and" >> pair["bee"]="bee" => "bee" >> pair["cat"]="cat" => "cat" >> pair["dog"]="dog" => "dog" >> pair.each do |key, val| >> print key, "=>", val, "\n" >> end apple=>apple and=>and bee=>bee cat=>cat dog=>dog => {"cat"=>"cat", "and"=>"and", "bee"=>"bee", "apple"=>"apple", "dog"=>"dog"} ご参考になれば幸いです. -- --- We Ain't Seen Nothin' Yet.  内山 紀明  uchiyama.noriaki@gmail.com  http://blog.fulltext-search.biz/