monthly gimite

試験運用中。

配列などからHashを作る

配列を作るならmapが使える場面で、Hashだといちいち

result= {}
for v in [1, 2, 3, 4, 5]
  result[v]= 2*v
end

とか書くのが面倒だったので、僕は

module Enumerable
    
    def map_to_hash(h= {}, &block)
      for a in self
        (k, v)= block ? yield(a) : a
        h[k]= v
      end
      return h
    end
    
end

とかいうメソッドを定義して

[1, 2, 3, 4, 5].map_to_hash(){ |v| [v, 2*v] }
# => {5=>10, 1=>2, 2=>4, 3=>6, 4=>8}

とかやってたんですが、injectinjectもどきを使うというのは思いつきませんでした。

どうもinjectって挙動がぱっとイメージできないのであまり使ってないんですよね…。