連番が入った配列を作ろうと思って普通に
[1..10]
とかやったけどぜんぜんできなくてなにが起きたのかと思ったら、単純にこれで作れると勝手に思いこんでただけでそんなんでできないって話だった。
[1..10]でできるのは1..10というRangeが入った要素が1つある配列ができるだけで、連番から配列を作りたかったらRangeからto_aして配列作るか、Array関数にRange渡して作るかのどっちかだった。
$ irb irb(main):001:0> x = 10 => 10 irb(main):002:0> [1..x] => [1..10] irb(main):003:0> [1..x].to_a => [1..10] irb(main):004:0> a = [1..x] => [1..10] irb(main):005:0> a[0] => 1..10 irb(main):006:0> a[0].class => Range irb(main):011:0> Array(1..x) => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] irb(main):012:0> (1..x).class => Range irb(main):013:0> (1..x).to_a => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
よく理解してないのに思いこみやばい。
勉強になる。