From: "pan (Pan Pan)" Date: 2022-04-10T04:38:27+00:00 Subject: [ruby-core:108204] [Ruby master Bug#18688] when array's default value is empty hash adding a hash key value changes all array elements 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: