Bug #5406
closedinconsistent odd-length array rejection in Hash[*ary] vs Hash[ary]
Description
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.