From: Suraj Kurapati Date: 2011-10-05T02:50:05+09:00 Subject: [ruby-core:39945] [Ruby 1.9 - Bug #5406][Open] inconsistent odd-length array rejection in Hash[*ary] vs Hash[ary] Issue #5406 has been reported by Suraj Kurapati. ---------------------------------------- Bug #5406: inconsistent odd-length array rejection in Hash[*ary] vs Hash[ary] http://redmine.ruby-lang.org/issues/5406 Author: Suraj Kurapati Status: Open Priority: Normal Assignee: Category: Target version: 1.9.x ruby -v: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] Hello, Hash[*ary] raises an error when given odd number of arguments: >> Hash.[]( 1, 2, 3 ) ArgumentError: odd number of arguments for Hash from (irb):3:in `[]' from (irb):3 from /usr/bin/irb:12:in `
' In contrast, Hash[ary] silently accepts odd-length arrays: >> Hash.[]( [1, 2, 3] ) {} >> Hash.[]( [[1, 2], 3] ) { 1 => 2 } >> Hash.[]( [[1, 2], [3]] ) { 1 => 2, 3 => nil } >> Hash.[]( [[1, 2], [3,4,5]] ) { 1 => 2 } I think this behavior is inconsistent. Please either: (1) change Hash[ary] to raise errors upon seeing odd-length arrays or (2) change Hash[*ary] to not raise an error for odd number of arguments and instead accept the last odd argument as a key with value nil, just like this existing behavior: >> Hash.[]( [[1, 2], [3]] ) { 1 => 2, 3 => nil } Thanks for your consideration. -- http://redmine.ruby-lang.org