Issue #10270 has been updated by Yukihiro Matsumoto.

Status changed from Open to Feedback

1. I am not sure #insert is the best name for non clobbering merge.
2. do you know merge takes a block to resolve key conflict?

     h.merge(h2) {|key,v1,v2|v1}

   works as your proposed #insert.

Matz.


----------------------------------------
Feature #10270: Hash#insert
https://bugs.ruby-lang.org/issues/10270#change-49030

* Author: Atlas Prime
* Status: Feedback
* Priority: Normal
* Assignee: 
* Category: core
* Target version: 
----------------------------------------
Hash doesn't appear to have a "safe" way to insert an entry that won't clobber another key if it is already there. So how about:

~~~
class Hash

  # Like Hash#store but only stores if the key isn't already
  # in the hash. Returns true if inserted, otherwise false.
  #
  def insert(name, value)
    if key?(name)
      false
    else
      store(name,value)
      true
    end
  end

end
~~~




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