From: farhadeyvazli@... Date: 2019-12-27T11:36:17+00:00 Subject: [ruby-core:96512] [Ruby master Bug#16457] Invisible keys on hash when defining hash with Hash.new({}) Issue #16457 has been reported by Farhad (Farhad Eyvazli). ---------------------------------------- Bug #16457: Invisible keys on hash when defining hash with Hash.new({}) https://bugs.ruby-lang.org/issues/16457 * Author: Farhad (Farhad Eyvazli) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: 2.6.3 * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- When using ``` Hash.new()``` to initialize a hash, we all know for undefined it will return specific value which sent as a parameter to the ```Hash.new`` But when doing something like that keys get invisible ```ruby my_hash: Hash.new({}) my_hasy[:my_key] #=> {} my_hash[:my_key].merge!(value: '') my_hash.keys #=> [] my_hash.fetch(:my_key) #=> KeyError: key not found: :my_key my_hash.dig(:my_key) #=> {:value=>""} my_hash[:my_key] #=> {:value=>""} ``` Maybe it's normal behavior because, for each missing key, it initialize new empty has and merge it to that. But I'm not sure it can cause a memory leak or not when removing the main hash (:my_hash) -- https://bugs.ruby-lang.org/ Unsubscribe: