Project

General

Profile

Actions

Bug #10713

closed

Assigning default value for a Hash as an empty Array creating unpredictable results

Added by punjab (Arvinder Singh) almost 7 years ago. Updated almost 7 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
ruby -v:
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
[ruby-core:67412]

Description

Creating a Hash with a default value works fine, unless the default value is an empty Array.

E.g. the following returns an empty Hash...

irb(main):001:0> letters = Hash.new([])
=> {}
irb(main):002:0> letters[:a] << 1
=> [1]
irb(main):003:0> letters[:a] << 2
=> [1, 2]
irb(main):004:0> letters[:a]
=> [1, 2]
irb(main):005:0> letters
=> {}

whereas the following code explicitly defining hash keys works.

irb(main):001:0> letters = {a: [], b: []}
=> {:a=>[], :b=>[]}
irb(main):002:0> letters[:a] << 1
=> [1]
irb(main):003:0> letters[:a] << 2
=> [1, 2]
irb(main):004:0> letters[:a]
=> [1, 2]
irb(main):005:0> letters
=> {:a=>[1, 2], :b=>[]}

Is this an unpredictable(bug) or an expected behavior(feature). I tend to lean towards the former, but I might be wrong.

Actions

Also available in: Atom PDF