ドキュメントにはなかったが、ググると他にもループする方法がこんなにたくさんあった。
成果物
情報源
loop
ブロック
loop { p 'LOOP'; break; }
以下のようにも書ける。
loop do p 'LOOP' break end
int#times
構文。
回数.times { } 回数.times {|i| } 回数.times do ... end 回数.times do |i| ... end
3回実行する。
3.times { p 'TIME' }
3.times {|i| p "#{i}回目" }
3.times do p 'TIME' end
3.times do |i| p "#{i}回目" end
i
は0
からはじまる整数値。
int#upto
構文。
開始.upto(終了) { } 開始.upto(終了) {|i| } 開始.upto(終了) do ... end 開始.upto(終了) do |i| ... end
1から3までの3回実行する。
1.upto(3) { p 'UPTO' }
メソッドの()
は省略できない。
1.upto 3 { p 'UPTO' }
syntax error, unexpected '{', expecting end-of-input (SyntaxError)
ブロック引数i
で添字を受け取れる。
1.upto(3) {|i| p "#{i}:UPTO" }
"1:UPTO" "2:UPTO" "3:UPTO"
5.upto(7) do |i| p "#{i}:UPTO" end
"5:UPTO" "6:UPTO" "7:UPTO" => 5
downto
upto
のデクリメント版。
構文。
開始.downto(終了) { } 開始.downto(終了) {|i| } 開始.downto(終了) do ... end 開始.downto(終了) do |i| ... end
3から1までの3回実行する。
3.downto(1) { p 'DOWNTO' }
メソッドの()
は省略できない。
3.downto 1 { p 'DOWNTO' }
syntax error, unexpected '{', expecting end-of-input (SyntaxError)
ブロック引数i
で添字を受け取れる。
3.downto(1) {|i| p "#{i}:DOWNTO" }
"3:DOWNTO" "2:DOWNTO" "1:DOWNTO" => 3
7.downto(5) do |i| p "#{i}:DOWNTO" end
"7:DOWNTO" "6:DOWNTO" "5:DOWNTO" => 7
繰り返し制御
制御文 | 意味 |
---|---|
break |
ループを中断して抜ける |
next |
ループを中断して次のループへ遷移する |
redo |
ループを中断して同じループをやり直す |
rescue
内で使うretry
もあってややこしい。でもループを制御するのは上記3つだけのはず。
ググって判明した。redo
はほかの言語になかったので新しい。
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
- Ruby 3.0.2