[ruby-core:108204] [Ruby master Bug#18688] when array's default value is empty hash adding a hash key value changes all array elements
From:
"pan (Pan Pan)" <noreply@...>
Date:
2022-04-10 04:38:27 UTC
List:
ruby-core #108204
Issue #18688 has been reported by pan (Pan Pan).
----------------------------------------
Bug #18688: when array's default value is empty hash adding a hash key value changes all array elements
https://bugs.ruby-lang.org/issues/18688
* Author: pan (Pan Pan)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]
* Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN
----------------------------------------
```ruby
ah = Array.new(3, {})
ah[1][:foo] = 'bar'
p ah # [{:foo=>"bar"}, {:foo=>"bar"}, {:foo=>"bar"}]
```
This is not expected result. The expected result is `[{}, {:foo=>"bar"}, {}]`.
Alternatively, below code works as expected.
```ruby
ah = Array.new(3) {{}}
ah[1][:foo] = 'bar'
p ah # [{}, {:foo=>"bar"}, {}]
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>