あたりまえだったんだけど、ちょっとがっかりしてしまったこと

ちょっと、前にHashの要素のvalueのほうをちょっと変換して、あたらしいHashが欲しいと思ったことがあって、そのときにHashのmapつかったらどうなるのかなと思ってやったら、予想通り配列が返ってきてがっかりしてしまった。

 {:a=>1,:b=>2,:c=>3}.map{|i,j| [i,j]}
=> [[:c, 3], [:a, 1], [:b, 2]]

まじめに、injectつかってやるしかないのね。

:a=>1,:b=>2,:c=>3}.inject({}){|i,(j,k)| i[j] = k+1;i}
=> {:c=>4, :a=>2, :b=>3}

どうしても、最後のiを書くのを汚く感じてしまうなぁ。

あと、最近、injectの中で、さらにinjectなんていうことをやって、なんか、自分の中でinjectのブロック変数はi,jを使うように脊髄がおぼえているようで、シャドウイングやらかしてしまい、自分に絶望した。