Forum: Ruby Re: Hash#getopt

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
F3b7b8756d0c7f71cc7460cc33aefaee?d=identicon&s=25 Berger, Daniel (Guest)
on 2006-04-25 19:57
(Received via mailing list)
>    some_method arg, "key" => "value"
>
> or
>
>    some_method arg, :key=>:value
>
> are idiomatic ruby.  let's just support it directly and be
> done with it:

<snip>

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. :)

Regards,

Dan



This communication is the property of Qwest and may contain confidential
or
privileged information. Unauthorized use of this communication is
strictly
prohibited and may be unlawful.  If you have received this communication
in error, please immediately notify the sender by reply e-mail and
destroy
all copies of the communication and any attachments.
Cb48ca5059faf7409a5ab3745a964696?d=identicon&s=25 unknown (Guest)
on 2006-04-25 20:22
(Received via mailing list)
On Wed, 26 Apr 2006, Berger, Daniel wrote:

>
> 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
This topic is locked and can not be replied to.