参考書とかに書いてあるのだろうと思いますが、備忘録代わりに。
たとえば
以下のような複数の要素が混ざった配列を連想配列で分離させたい場合
array = [1, 2, "a", 3, "b", "c", 4]
ideal_hash = {
hoge: [1, 2, 3, 4],
fuga: ["a", "b", "c"]
}
今まで自分が書いていたコード
ideal_hash = { hoge: [], fuga: [] }
array.each do |i|
i.is_a?(Integer) ? hash[:hoge] << i : hash[:fuga] << i
end
こうも書けるということを最近知った
tapメソッドは生成した自分自身を返すので、スッキリ書けるというのもあり、できるだけ使っていきたいという気持ちがあります。
ideal_hash = { hoge: [], fuga: [] }.tap do |hash|
array.each do |i|
i.is_a?(Integer) ? hash[:hoge] << i : hash[:fuga] << i
end
end