From: Carl Date: 2005-04-19T00:54:37+09:00 Subject: Undocumented behavior related to Hash::default_proc Hello, I found a behavior in Ruby 1.8.2 in using Hashes with a default_proc. Here is what I did: def initialize @var = Hash.new { |hash,key| hash[key] = Array.new } ... elements.each { |element| ... @var[key].push element ... } ... I like that I can make this Hash autovivifying (somewhat like Perl) for this initial loop. It made the loop more concise. However, I also like that in Ruby, I can 'turn it off' when I'm done. After the above iterator executes I do this: @var.default = nil At least in Ruby 1.8.2 this line makes the default_proc effectively go away. The problem is that I cannot find any documentation for Hash that explicitly states this as the behavior of hash.default = nil. My fear is that someday down the road this undocumented behavior will go away or change. Since Hash does not implement default_proc= to explicitly assign the default_proc this is the only way to accomplish what I want to do. I would recommend one of the following: 1 - Document this behavior and keep it for good. 2 - Implement default_proc= and allow hash.default_proc = nil to accomplish this. 3 - Come up with a better way to allow 'turning off' the default_proc and document it. Thoughts? Thank you, Carl