Issue #6737 has been updated by shyouhei (Shyouhei Urabe).


trans (Thomas Sawyer) wrote:
> Has #fetch always had second default argument?

I think so.

> Although... I imagine there must be an extra condition in #fetch to decide whether to raise an error or return a default instead.

The behaviour of #[] is, to say in English,

(1) seek for the key
(2) if the hash conains the key, returns that
(3) else if the hash has default value, returns that
(4) else if the hash has default_proc, calls that
(5) otherwise returns nil.

and that of #fetch is,

(1) seek for the key
(2) if the hash conains the key, returns that
(3) else if optional second argument is given, returns that
(4) else if optional block argument is given, calls that
(5) otherwise raises exception.

So overheads are minimal, if any.
----------------------------------------
Feature #6737: Add Hash#read and alias as #[].
https://bugs.ruby-lang.org/issues/6737#change-28160

Author: trans (Thomas Sawyer)
Status: Feedback
Priority: Normal
Assignee: 
Category: core
Target version: 2.0.0


Just, generally speaking it is nice to have a word named method for things when that suites readability better. Most operators (outside of numerical math, of course) have word equivalents. I actually hope you will accept this request based on this merit alone.

But more specifically this is also related to #6442, "CRUDifying" Hash's design. Adding #read is essentially the first step in doing this. Since #read, being the "R" in CRUD, would be one of the core methods, its preferable to have word-named method to go along with other methods, #store (for create and update) and #delete to act as that foundation.

Obviously there is nothing earth shattering here, just asking for an alias at this point. I'd like to incrementally submit requests/patches to "CRUDify" Hash rather then submit one huge patch as it will be much easier to test and ensure backward compatibility that way.



-- 
http://bugs.ruby-lang.org/