Array#flatten は配列をたたむメソッドです。 ary = [ [1], [2, [3], 4], [5] ] p ary.flatten #=> [1, 2, 3, 4, 5] このメソッドは便利に見えて、非常にはまりやすいメソッドです。このメソッドはたたみすぎるんです。上で言うと、[1, 2, [3], 4, 5] を返してほしいのです。 例えば、「ちょっと x と y の組を作りたいけど、いちいち Point クラスを作るのは面倒」というようなときに、横着して [x, y] という配列を使います。その後、「座標の配列の配列」から「座標の配列」を作ろうと思って flatten すると、なんと「x と y が順に並んだ配列」ができてしまいます。これはたまりません。 この例だけ見れば「横着すんな」で終わりそうですが、 そうは言っても使い捨てプログラムでは横着したいし、 連想配列か