[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Question about Hash's initialize

Suhku Huh

3/10/2006 9:59:00 PM

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]
aa
a
b
c
=> {'aa'=>11, 'a'=>1, 'b'=>2, 'c'=>3}
> OHash['b', 2, 'c', 3, 'a', 1, 'aa', 11]
b
c
a
aa

As the code says, argument to class [] method is a already Hash when we
initialize hash form.
Any comments, ideas and test results would be appreciated.

Suhku
2 Answers

Ara.T.Howard

3/10/2006 10:27:00 PM

0

Suhku Huh

3/10/2006 11:15:00 PM

0

Thanks a lot for helpful comments. I'll check RAA including OrderHash.

Btw, why do you need that?


I would use it implementing some menu structure that varies with user.
May be Array.assoc / rassoc may be used instead but I think Has is more
appropriate if key order is maintained.


regards.