Actions
Bug #2764
closedHash.new inconsistency when initialized with an enumerable
Status:
Rejected
Assignee:
-
ruby -v:
ruby 1.8.7 (2009-04-08 patchlevel 160) [i686-darwin9]
Description
=begin
When initializing a Hash with an enumerable as default value, Hash.new(obj) and Hash.new(&block) have different behaviours.
Example:
h = Hash.new([])
h[10] << 20
h #=> {}
h = Hash.new { |hash, key| hash[key] = [] }
hash[10] << 20
h #=> {10=>20}
The example similar when using a String instead of an Array as default value.
=end
Updated by marcandre (Marc-Andre Lafortune) over 14 years ago
- Category set to core
- Status changed from Open to Rejected
=begin
This is by design.
Note that the behavior is actually different for all types of objects, even immediates
h = Hash.new(42)
h[:foo] # ==> 42
h.keys # ==> []
h = Hash.new { |hash, key| hash[key] = 42 }
h[:foo] # ==> 42
h.keys # ==> [:foo]
=end
Actions
Like0
Like0