summaryrefslogtreecommitdiffhomepage
path: root/mrblib
diff options
context:
space:
mode:
authorIchito Nagata <[email protected]>2018-06-01 12:48:17 +0900
committerIchito Nagata <[email protected]>2018-06-01 12:48:17 +0900
commit4a2b055cdd7b006e77f0d0cb82cb0e8c546027f9 (patch)
treec0cbbc862a4de4ecc8739125a3aec11f4cbddf52 /mrblib
parentb64ce17852b180dfeea81cf458660be41a78974d (diff)
downloadmruby-4a2b055cdd7b006e77f0d0cb82cb0e8c546027f9.tar.gz
mruby-4a2b055cdd7b006e77f0d0cb82cb0e8c546027f9.zip
let Hash#merge keep ifnone value
Diffstat (limited to 'mrblib')
-rw-r--r--mrblib/hash.rb3
1 files changed, 1 insertions, 2 deletions
diff --git a/mrblib/hash.rb b/mrblib/hash.rb
index 6b4803ccb..7e1db905f 100644
--- a/mrblib/hash.rb
+++ b/mrblib/hash.rb
@@ -179,10 +179,9 @@ class Hash
#
# ISO 15.2.13.4.22
def merge(other, &block)
- h = {}
raise TypeError, "can't convert argument into Hash" unless other.respond_to?(:to_hash)
other = other.to_hash
- self.each_key{|k| h[k] = self[k]}
+ h = self.dup
if block
other.each_key{|k|
h[k] = (self.has_key?(k))? block.call(k, self[k], other[k]): other[k]