繰り返し処理 Each for
配列やハッシュ.each do |変数| #繰り返し実行したい処理 end
例1
#1:配列 numbersを作成(1,2,3,4,5)
numbers = [1, 2, 3, 4, 5]
#2:配列の要素を一つずつ取り出して実行
numbers.each do |number|
  puts number
end
別解1
numbers.each {|number|
  puts number
}
#一行でもかける
numbers.each {|number| puts number }
↑配列が入っている要素は複数形||の中の変数は
単数で書くことが多いらしい
配列 colors を作成
‘red’, ’green’ ’blue’
配列の要素を一つずつ取り出して出力
colors = ['red', 'green', 'blue'] colors.each do |color| puts color end red green blue => ["red", "green", "blue"]
#繰返処理 for構文 for 変数 in 配列やハッシュ do #繰り返し実行したい処理 end
1:配列 numbersを作成(1,2,3,4,5)
2:配列の要素を一つずつ取り出して実行
numbers = [1, 2, 3, 4, 5] for number in numbers do puts number end
forは原則使わないらしい
each (ハッシュ利用)
1:ハッシュで生徒ごとの点数scoresを用意
{luke: 100, ben: 90, alan: 70 }
配列の要素を一つずつ取り出して出力
scores = {luke: 100, ben: 90, alan: 70}
scores.each do |k, v|
  puts v
end
#出力されるもの
100
90
70
両方取り出したいとき↓
scores = {luke: 100, ben: 90, alan: 70}
scores.each do |k, v|
  puts "#{k}, #{v}"
end
#出力されるもの
luke, 100
ben, 90
alan, 70
80点以上を取り出したいとき↓ifをeachに追加
scores = {luke: 100, ben: 90, alan: 70}
scores.each do |k, v|
  if v >= 80
    puts "#{k}, #{v}"
  end
end
luke, 100
ben, 90
繰り返し処理 times
繰り返し回数.times do |i| 繰り返し実行したい処理 end |i|は省略可能
5.times do puts 'Hello' end Hello Hello Hello Hello Hello
ダブルクオートで囲んだとき
5.times do |i|
  puts "#{i}: Hello"
end
0: Hello
1: Hello
2: Hello
3: Hello
4: Hello
上も下も同じ意味
5.times { |i| puts "#{i}: Hello" }
繰り返し処理(while)
while 条件式 do 繰り返し実行したい処理 end
数字を0から9まで、10個出力するプログラム。whileを使って書く
i = 0
while i < 10
  puts "#{i}:hello"
    i += 1 #i = i + 1
end
#出力されるもの
0:hello
1:hello
2:hello
3:hello
4:hello
5:hello
6:hello
7:hello
8:hello
9:hello
無限ループが起きることがあるので気をつけよう
uptoとdownto
開始値.upto(終了値){繰り返し実行したい処理}
10.upto(14) {|n| puts n }
14.downto(10) {|n| puts n }
10
11
12
13
14
14
13
12
11
10
繰り返し処理step
開始式.step(上限値,一度に増減する大きさ){}
1.step(10, 2) { |n| puts n }
1
3
5
7
9
減らすときはマイナスで
10.step(1, -2) { |n| puts n }
10
8
6
4
2
繰り返し処理(loop)
loop do 繰り返し実行したい処理 end
loopメソッドを使って、変数の値を0から1ずつ増やして出力
i = 0 loop do puts i i += 1 #breakがないと無限ループに突入するので注意! break if i == 10 end 0 1 2 3 4 5 6 7 8 9
whileの場合
n = 0 while true puts ncf n += 1 end
応用)配列[1,2,3,4,5,]の値が、奇数の場合のみ、画面に出力する処理。
eachとnextを利用
numbers = [1, 2, 3, 4, 5] numbers.each do |n| next if n % 2 == 0 #もしnが偶数だったらループをスキップするという意味 #上と下は同じ意味だで next if n.even? #奇数の時はodd next if n.odd? puts n end #出力されるもの 1 3 5

