summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-hash-ext/mrblib/hash.rb
diff options
context:
space:
mode:
authorKouhei Sutou <[email protected]>2017-03-21 16:42:25 +0900
committerKouhei Sutou <[email protected]>2017-03-21 23:25:36 +0900
commite72e50b5d57d4ad003da8a1531263f7795c27db5 (patch)
tree01cc3d00b73e7e0b2819e339f6a7dff24a260b2b /mrbgems/mruby-hash-ext/mrblib/hash.rb
parent3703aed7ab7c056ef7a58fd8d25b84b59f715dad (diff)
downloadmruby-e72e50b5d57d4ad003da8a1531263f7795c27db5.tar.gz
mruby-e72e50b5d57d4ad003da8a1531263f7795c27db5.zip
Hash sub class creates new sub class objects instead of Hash
Diffstat (limited to 'mrbgems/mruby-hash-ext/mrblib/hash.rb')
-rw-r--r--mrbgems/mruby-hash-ext/mrblib/hash.rb8
1 files changed, 4 insertions, 4 deletions
diff --git a/mrbgems/mruby-hash-ext/mrblib/hash.rb b/mrbgems/mruby-hash-ext/mrblib/hash.rb
index db4db42e8..31ff6d685 100644
--- a/mrbgems/mruby-hash-ext/mrblib/hash.rb
+++ b/mrbgems/mruby-hash-ext/mrblib/hash.rb
@@ -28,11 +28,11 @@ class Hash
if length == 1
o = object[0]
if o.respond_to?(:to_hash)
- h = Hash.new
+ h = self.new
object[0].to_hash.each { |k, v| h[k] = v }
return h
elsif o.respond_to?(:to_a)
- h = Hash.new
+ h = self.new
o.to_a.each do |i|
raise ArgumentError, "wrong element type #{i.class} (expected array)" unless i.respond_to?(:to_a)
k, v = nil
@@ -53,7 +53,7 @@ class Hash
unless length % 2 == 0
raise ArgumentError, 'odd number of arguments for Hash'
end
- h = Hash.new
+ h = self.new
0.step(length - 2, 2) do |i|
h[object[i]] = object[i + 1]
end
@@ -211,7 +211,7 @@ class Hash
#
def invert
- h = Hash.new
+ h = self.class.new
self.each {|k, v| h[v] = k }
h
end