On Sat, 11 Mar 2006, Robert Klemme wrote:

> 2006/3/10, Suhku Huh <nineclue / gmail.com>:
>> I'd like to make a class that behave like a Hash but keeps keys in created
>> order.
>> Followings are some initial testing codes...
>>
>> class OHash < Hash
>>   def self.[](*args)
>>     if (args.size == 1) and args[0].kind_of?(Hash)
>>       args[0].each_key { |k| puts k}
>>     else
>>       args.each_index { |i| puts(a[i]) if (i % 2) == 0 }
>>     end
>>     super
>>   end
>>
>>   def []=(key, value)
>>     puts key
>>     super
>>   end
>> end
>>
>> I'm going to replace puts call to assignment later, and would like to use
>> instead of Hash or even override default Hash's methods using alias.
>> Tests...
>>
>>> OHash['b'=>2, 'c'=>3, 'a'=>1, 'aa'=>11]
>
> AFAIK there is no way to get this ever to work as you expect since, as
> you said, the arguments are transformed into a hash before the method
> call.
>
>> Any comments, ideas and test results would be appreciated.
>
> You're not the first one that desires such a beast. If you don't do it
> for the fun of it, I'd just check the RAA - I'm sure there is already
> a hash that maintains insertion order. Btw, why do you need that?
>
> Kind regards
>
> robert

my alib has an OrderHash class.  anyone's welcome to it for the stealing.
it's on the raa and rubyforge.


regards.

-a

-- 
share your knowledge.  it's a way to achieve immortality.
- h.h. the 14th dali lama