Issue #11761 has been updated by Yukihiro Matsumoto.

Status changed from Open to Rejected

Use `tap`. Methods with side-effect should be handled with care.  Making it chainable has little benefit.

Matz.


----------------------------------------
Feature #11761: `Hash#default_set` and `Hash#default_proc_set`
https://bugs.ruby-lang.org/issues/11761#change-55281

* Author: Tsuyoshi Sawada
* Status: Rejected
* Priority: Normal
* Assignee: 
----------------------------------------
I often want to assign a default value or proc to an existing hash `h` and chain method after it. The way I do it is:

    Hash.new(default_value).merge(h)...
    Hash.new{default_proc_value}.merge(h)...

It would be convenient if I can assign them to a hash directly, and `Hash#default=` and `Hash#default_proc=` are close to doing that, but they are actually not useful because the return value is not the receiver hash:

    h.default = default_value; h...
    h.default_proc = proc {default_proc_value}; h...

I wish there were methods `Hash#default_set` and `Hash#default_proc_set` that return the receiver hash:

    h.default_set(default_value)...
    h.default_proc_set{default_proc_value}...




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