From: "NARUSE, Yui" Date: 2009-07-20T05:33:27+09:00 Subject: [ruby-core:24446] Re: Hash[[1,2]] => {} ?? David A. Black wrote: > On Mon, 20 Jul 2009, NARUSE, Yui wrote: >> When the number of argument for Hash[] is 1, >> the argument must be a hash (or hash like object) or an array (or >> array like). >> >> And the array object must be an array of two or one length array. >> Your code is an array of integer, so the code returns the empty hash. > > I'm not sure I understand the reasoning behind that. It seems awfully > complicated and hard to follow: > >snip< > > I'm not clear on the underlying design principle, I guess. The 1.8 > version seems like it was easier to read; an odd number of arguments > was wrong, which makes sense (to me) for a hash. The motivation of thie spec is for an array of key-value arrays. >> Hash[[[:a,1], [:b,2], [:c]]] => {:a=>1, :b=>2, :c=>nil} So arrays beyond this will be empty. > Wouldn't it be clearer if Hash[[1,2]] was an error? How about following, >> Hash[[[:a,1], [:b,2], [:c], nil]] => {:a=>1, :b=>2, :c=>nil} But raise if the content of argument array is not neither array nor nil, it maybe adoptable without compatibility problem. -- NARUSE, Yui