From: ara.t.howard@... Date: 2006-04-26T03:20:56+09:00 Subject: Re: [RCR] Hash#getopt On Wed, 26 Apr 2006, Berger, Daniel wrote: > > > I'd rather have a class or instance level method that let me define this > behavior globally for all hashes, or locally for instances. That way I > can keep the standard aref syntax, e.g. arg[:key] instead of using a > separate method name. I wouldn't mind a way to ignore case, either. > > h = {'foo', 1, 'BAR', 2} > h.symbol_alias = true # or whatever > h.ignore_key_case = true # or whatever > > h['foo'] # 1 > h[:foo] # 1 > h["FOO"] # 1 > h['bar'] # 2 > ... etc, etc. > > That being said, I'll take a Hash#getopt method over nothing. :) i agreed. the issue though, is that doing that sort of thing globally for hashes requires a good bit of code to make something like this work opts.values_at :key, 'key' or opts_a = {:key => 42} opts_b = {'key' => 42.0} opts_a.update opts_b by sticking to access of options only it's possible to provide an easy way to do the normal thing in 98% of cases. as the above two examples show though, a more general approach involves making lots of choices about string/symbol interaction. i actually do this in my own code but it's slippery and not for general consumption. regards. -a -- be kind whenever possible... it is always possible. - h.h. the 14th dali lama