3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Ruby】eachの入れ子

Posted at

※初心者向け
※アウトプット練習の為

開発環境
rails 6.0.4.4
ruby 2.6.5

##問題内容
以下のように、果物の名前と値段が入った配列があります。
この配列を用いて、果物の名前とそれぞれの合計額が出力される
コードを記述してください。

fruits_price = [["apple", [200, 250, 220]], ["orange", [100, 120, 80]], ["melon", [1200, 1500]]]
(出力)
appleの合計金額は670円です
orangeの合計金額は300円です
melonの合計金額は2700円です

##解答


fruits_price = [["apple", [200, 250, 220]], ["orange", [100, 120, 80]], ["melon", [1200, 1500]]]

fruits_price.each do |fruit|
  sum = 0
  fruit[1].each do |price|
    sum += price
  end
  puts "#{fruit[0]}の合計金額は#{sum}円です"
end

##解説
最初に、3行目でfruits_priceから**["apple", [200, 250, 220]]という値を取り出し、
変数fruitに代入します。その後4行目〜7行目で、fruitの1番目の値
[200, 250, 220]**
から値を1つずつ取り出して、自己代入しながらsumを出力します。
丁寧に見ると以下のようになります。

# 1回目
sum = 0
#sum += priceはsum = sum + priceと解釈できる
sum = 0 + 200
# 返り値
sum = 200

#2回目 
#sumは1回目の200という値が返されます
sum = 200
sum = 200 + 250
sum = 450

#3回目 
#sumは2回目の450という値が返されます
sum = 450
sum = 450 + 220
sum = 670

この結果、appleの合計金額は670円ですと出力されるようになります。この作業を残り2つorange、melonでも繰り返します。

3
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?