On Thu, May 17, 2012 at 10:48 AM, Donald Ball <[email protected]> wrote:
> I would strongly advocate using the Hash#fetch method in general:
>
> options.fetch(:length, 30)
>
> Though it's worth noting it gives different results than the || idiom
> for nil and false hash values.

It also gives different results if options has a default value or a
default proc.

If the default value is expensive to produce, using the block version
of Hash#fetch may be better for performance, as then it will only
produce the expensive value if the options hash doesn't contain the
option.

It's generally considered bad style to modify arguments passed into a
method unless that is the purpose of the method itself.  Using:

  options.reverse_merge!(:length => 30)

or

  options[:length] ||= 30

modifies the options hash, and that's a bad idea IMO.

Jeremy

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en.

Reply via email to