はじめに
rubyの勉強をはじめたので、
自分の思考の整理、メモとして繰り返し処理に関しての基礎的なことを書きます。
-
terminal
にてirb
と打つことでコードを試すことができる。exit
で終了 - 拡張子.rbのファイルにコードを記述して
terminal
にてruby ファイル名
でコードを実行できる。 -
puts
p
で表示できる。jsで言うところconsole.log()
- コメントアウトは
#
for
あらかじめ指定したオブジェクトから順に値を取り出しながら繰り返す。
for 変数 in オブジェクト do
実行する処理
end
オブジェクト
の部分には配列、範囲オブジェクト、ハッシュ、などが該当
- コード
for num in [1,2,3,4] do
p num
end
for num in 1..4 do
p num
end
animals = {:dog => "いぬ", :cat => "ねこ"}
for key, value in animals
puts "KEY:#{key} VALUE:#{value}"
end
# KEY:dog VALUE:いぬ
# KEY:cat VALUE:ねこ
while
指定した条件式が真(true)の間、繰り返す
while 条件式 do
実行する処理
end
結果 | 条件 |
---|---|
真 | false と nil 以外のオブジェクト全て |
偽 | false と nil |
- コード
num = 0
while num <= 12 do
p num
num += 5
end
# 0
# 5
# 10
until
指定した条件式が偽(false)の間、ループする。
「while」文が真(true)の間繰り返しを行うのに対して「until」文は偽(false)の間繰り返す。
until 条件式 do
実行する処理
end
num = 15
until num <=10 do
p num
num -=1
end
# 15
# 14
# 13
# 12
# 11
ここまでRubyの制御構造である繰り返し処理
*for while until ではdo省略可
each
オブジェクト.each do |変数|
実行する処理
end
- コード
(8..10).each do |num|
puts num
end
# 8
# 9
# 10
*範囲オブジェクトは括弧で囲って記述
each_with_index
eachではindexがとれないのでindexが欲しい時に使用。
["dog","cat"].each_with_index do |item,index|
p "#{index}. #{item}"
end
# "0. dog"
# "1. cat"
times
回数.times do
繰り返す処理
end
- 回数を変数として持つ(0から始まる)
3.times do |i|
puts "#{i}回目"
end
# 0回目
# 1回目
# 2回目
upto
timeメソッドと違って指定した初期値から最大値までを1ずつ増やしながらループ
1.upto(3) do |i|
puts "#{i}回目"
end
# 0回目
# 1回目
# 2回目
downto
指定した初期値から最初値まで数値を1ずつ減らしながらループ
初期値.downto(最小値) do |i|
繰り返す処理
end
3.downto(1) do |i|
puts "#{i}"
end
# 3
# 2
# 1
繰り返しの制御
命令 | 条件 |
---|---|
break | 繰り返しを中断し、繰り返しの中から抜ける |
next | 次の繰り返しに処理を移す |
redo | 同じ条件で繰り返しをやり直す |
- break
[1,2,3].each do |num|
break if num ==2
p num
end
# 1
- next
[1,2,3,4].each do |num|
next if num ==2
p num
end
# 1
# 3
# 4
- redo
[0,1,2].each do |num|
num += 1
p num
redo if num == 1
end
# 1
# 2
# 2
# 3
まだまだ色々ありますが、今回はここまで。