hash_methods/string_keys_in_copies_no_parens.rb
tests/_examples/hash_methods/string_keys_in_copies_no_parens.rb in the metorex repository.
# A copy of a hash with String keys keeps its own keys: adding to the copy
# or to the original leaves the other as it was.
original = { "alpha" => 1 }
copied = original.dup
copied["beta"] = 2
original["gamma"] = 3
cloned = original.clone
cloned["delta"] = 4
p original.keys
p copied.keys
p cloned.keys
p original.keys.map(&:frozen?)
many = {}
1_000.times { |step| many["key#{step}"] = step }
p [many.size, many["key999"], many.keys.last.frozen?]
Output:
["alpha", "gamma"]
["alpha", "beta"]
["alpha", "gamma", "delta"]
[true, true]
[1000, 999, true]