10個ずつの数字とか、Rubyでどうやって作るか?なれるまで大変だった。rubyは規則性のある配列を作ることはとても簡単。
Rangeを覚えよう
rangeは覚えると楽ができる*1
Rangeの基本
(1..10).map{|i| i } #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] (120..130).map{|i| i } #=> [120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130] #下降するRangeは作れない。 (10..1).map{|i| i } #=> [] #下降するRangeを作るときはreverseする (1..10).map{|i| i }.reverse #=> => [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Rangeの応用で目的の数列を作れる
10刻みの配列を作る
(1..10).map{|i| i*10 } #=> [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
偶数・奇数の配列を作る
(1..10).map{|i| i*2 } #=> [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] (1..10).map{|i| i*2+1 } #=> [3, 5, 7, 9, 11, 13, 15, 17, 19, 21] (1..10).map{|i| i*2-1 } #=> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
特に漸化式がある数列はこれで全部作ることができる。
最初の頃よく書いていた間違い。
今思うと恥ずかしい
arr=[] 10.times do|i| arr<<i*10 end arr #=> [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
これも恥ずかしい
最初の頃はこう書いていました。特に問題なのは、タイプ量の多さと記号の多さ
arr=[] 1.upto(10) do|i| arr.push( i*10 ) end
すっきり書けるのに、ちょっとした違い(Rangeの応用)に気づかない。
Rangeを使うようになってかなりすっきり書けるようになってきた。
PHPを捨ててRubyにする理由
PHPをつかって同じ事をすると面倒で見通しが悪い
<?php $arr = null; foreach( range(1,10) as $n=>$v){ $arr[] = $v*10 } var_dump($arr)