今日も学んだことを忘れない為にメモします
入れ子でeach分を使用する際の方法
以下のように、果物の名前と値段が入った配列があり
fruits_price = [["apple", [200, 250, 220],[150,200,300]], ["orange", [100, 120, 80],[400,400]], ["melon", [1200, 1500],[500,500,500]]]
以下のように果物の名前とそれぞれの合計額が出力されるコードを記述する
appleの合計金額は670円です
orangeの合計金額は300円です
melonの合計金額は2700円です
記述内容
fruits_price = [["apple", [200, 250, 220],[150,200,300]], ["orange", [100, 120, 80],[400,400]], ["melon", [1200, 1500],[500,500,500]]]
fruits_price.each do |fruit|
sum = 0
fruit[1].each do |price|
sum += price
end
puts "#{fruit[0]}の合計金額は#{sum}円です"
end
each分の内容
eachメソッドを使用して変数fruits_priceから[["apple", [200, 250, 220],[150,200,300]]を取り出してブロック変数fruitに代入する。
sum = 0は合計金額を入れるために記述。
添字1番目の合計金額が知りたいのでfruit[1]に対してeachメソッドを使用し(添字2番目の合計金額が知りたいならfruit[2]とする)ブロック変数priceに代入。
sum += priceで添字1番の値を一つずつ取り出しながら自己代入していく。
sum = 0
sum = 0 + 200
sum = 200 + 250
sum = 450 + 220
sum = 670
"#{fruit[0]}の合計金額は#{sum}円です"のfruit[0]には果物の名前、sumには合計金額がそれぞれ出力される。
以上がeachの入れ子についての備忘録になります。