はじめまして,内山と申します.
> の順になってしまいました。できれば生成していった順で
> 表示されるとよいのですが、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@...
http://blog.fulltext-search.biz/