diff options
| author | Kouhei Sutou <[email protected]> | 2017-03-21 16:42:25 +0900 |
|---|---|---|
| committer | Kouhei Sutou <[email protected]> | 2017-03-21 23:25:36 +0900 |
| commit | e72e50b5d57d4ad003da8a1531263f7795c27db5 (patch) | |
| tree | 01cc3d00b73e7e0b2819e339f6a7dff24a260b2b /mrbgems/mruby-hash-ext/mrblib/hash.rb | |
| parent | 3703aed7ab7c056ef7a58fd8d25b84b59f715dad (diff) | |
| download | mruby-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.rb | 8 |
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 |
