Rubyで「1..10」はeachなどの繰り返し処理で使える
Rubyのソースコードでたまに見かける1..10
といった記述を利用すると、指定した回数だけ同じ処理を繰り返し実行することができます。
この記述をeachと組み合わせてみて、ループ処理を書いてみましょう。
{開始時の数字}..{終了時の数字}
という形でドット二つでつないで書きます。
実際にやってみると以下のようになります。以下の場合は10回puts
が実行されます。
puts i
としていますが、i
には現在の数字が格納されています。1,2,3,4,5…と受け取ることができるのでそれをそのままputsで表示している感じですね。
irb(main):001:0> (1..10).each { |i| puts i }
1
2
3
4
5
6
7
8
9
10
=> 1..10
ちなみにドットを三つにして1...10
とすると最後の数字は含まれなくなります。
1 <= i < 10
ということですね。以下のように1から9まで出力されます。
irb(main):001:0> (1...10).each { |i| puts i }
1
2
3
4
5
6
7
8
9
=> 1...10
1..10
の数字の部分は変数に置き換えることもできます。
以下の例ではnに3を格納して3回繰り返しをしています。
irb(main):001:0> n = 3
=> 3
irb(main):001:0> (1..n).each { |i| puts i }
1
2
3
=> 1..3
each
の他にもmap
なんかでもよく使いますね。
むしろ、mapの方がよく使うかもしれないです。
以下の場合、1から3までの数字を配列として取得できることになります。
mapだけだとEnumeratorというインスタンスになるだけなので、そこからto_a
メソッドで配列に変換しています。
irb(main):009:0> (1..3).map.to_a
=> [1, 2, 3]
この記事の環境情報
- Ruby 3.1.2
- 海外出張が突如取りやめになった
Rubyに関する他の記事を読む
- slimでtype='application/ld+json'のscriptタグを書く
- Slack APIによる自動メッセージでユーザーグループにメンションする方法
- RubyでUnixtimeからTimeオブジェクトを生成する
- gemインストール時にUndefined symbols for architecture arm64と出たときの対応
- RubyでUTCの時刻情報をJST基準に変換する
最近の記事を読む
- Flutterでcontextを使わずにlocale情報を取得する
- Cloud RunでIAPを有効にしようとしてハマったこと
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら