From: "山崎雄介" Date: 2007-08-20T08:58:49+09:00 Subject: [ruby-list:43864] Re: Hashへの生成順は保障されないのか? 山崎(ゆ)です。 PseudoHashなるものがあります。 http://raa.ruby-lang.org/project/pseudohash/ require 'pseudohash' pair = PseudoHash.new pair["apple",true]="apple" pair["and",true]="and" pair["bee",true]="bee" pair["cat",true]="cat" pair.order.each do |key| print key, "=>", pair[key], "\n" end 配布されているPseudoHashでは、順序付きにするのに、 pair["apple",true]="apple" としなければいけないのですが、順序付け以外の目的でPseudoHashが必要な場合 はないと思ったので、[]メソッドを書き換えて使っています。 require 'pseudohash' class PseudoHash def []=(k, *rest) val, set = rest.reverse # order.push k if set and not order.include? k order.push k if not order.include? k aset(k,val) end end pair = PseudoHash.new pair["apple"]="apple" pair["and"]="and" pair["bee"]="bee" pair["cat"]="cat" pair.order.each do |key| print key, "=>", pair[key], "\n" end _______________________ Yusuke Yamasaki