配列などから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}
とかやってたんですが、injectやinjectもどきを使うというのは思いつきませんでした。
どうもinjectって挙動がぱっとイメージできないのであまり使ってないんですよね…。