提交 2ee28b2b 编写于 作者: S Sergey Nartimov

fix HashWithIndifferentAccess.[] method

上级 ea482d36
...@@ -42,6 +42,10 @@ def self.new_from_hash_copying_default(hash) ...@@ -42,6 +42,10 @@ def self.new_from_hash_copying_default(hash)
end end
end end
def self.[](*args)
new.merge(Hash[*args])
end
alias_method :regular_writer, :[]= unless method_defined?(:regular_writer) alias_method :regular_writer, :[]= unless method_defined?(:regular_writer)
alias_method :regular_update, :update unless method_defined?(:regular_update) alias_method :regular_update, :update unless method_defined?(:regular_update)
......
...@@ -388,6 +388,15 @@ def test_store_on_indifferent_access ...@@ -388,6 +388,15 @@ def test_store_on_indifferent_access
assert_equal expected, hash assert_equal expected, hash
end end
def test_constructor_on_indifferent_access
hash = HashWithIndifferentAccess[:foo, 1]
assert_equal 1, hash[:foo]
assert_equal 1, hash['foo']
hash[:foo] = 3
assert_equal 3, hash[:foo]
assert_equal 3, hash['foo']
end
def test_reverse_merge def test_reverse_merge
defaults = { :a => "x", :b => "y", :c => 10 }.freeze defaults = { :a => "x", :b => "y", :c => 10 }.freeze
options = { :a => 1, :b => 2 } options = { :a => 1, :b => 2 }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册