Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

each_with_objectを使ったHash生成

またしても魔界記法の記事です。すみません

each_with_objectはブロックに値を渡して回すメソッドです。
普通はこんな感じで使います

%w(as you like).each_with_object("hoge").map(&:+)
=> ["ashoge", "youhoge", "likehoge"]

ここで、objectとしてHashをもたせてあげると・・・

%w(as you like).each_with_object({}) {|item, result| result[item] = item.length}
=> {"as"=>2, "you"=>3, "like"=>4}

となります。
配列でもいけますね。