Enumerable#each_with_object でハマった
[1, 2, 3].each_with_object(Array.new) do |i, memo| memo += [i, i * 2] end # => [ ]
あれ!?
[[1, 2], [2, 4], [3, 6]]
になると思ったのに!?
もうさんざん既出ですね!
Enumerable#each_with_object
は引数に対して破壊的な変更を加えなければダメなんですね。
つまり
[1, 2, 3].each_with_object(Array.new) do |i, memo| memo.push([i, i * 2]) end
のように破壊的なメソッドを利用すれば OK ですね。
もしくは今回のケースだと Enumerable#inject
を利用して、以下のようにすれば OK ですね。
[1, 2, 3].inject(Array.new) do |memo, i| memo + [i, i * 2] end
ハマったのでメモとして。