下記のコードを作成しました。
loop処理で、指定したorder_name、order_numで
注文内容の配列ordersに追加されていくようにしたつもりですが
配列ordersに追加ではなく、上書きされてしまいます。
(@orders.push(@new_order)の箇所)
原因と解決策がわかりましたら、教えていただけないでしょうか?
class Drink def initialize @new_order = {} @orders = [] @drinks = [{name:"Coffee", price: 5.2},{ name: "Tea", price: 5.0}, { name:"AppleSoda", price: 4.0}] end def drinks @drinks end def orders @orders end def add_menu(order_name:,order_num:) @new_order.store(:name,order_name) @new_order.store(:num,order_num) @drinks.each do |drink| if order_name == drink[:name] order_price = drink[:price] @new_order.store(:price,order_price.to_f) @orders.push(@new_order) end end end end drink = Drink.new puts drink.drinks loop do puts "Are you order something?" puts 'Yes:1 No:2' choice = gets.to_i case choice when 1 puts "What are you order?" order_name = gets.chomp puts "How many drinks?" order_num = gets.to_i drink.add_menu(order_name:order_name,order_num:order_num) when 2 puts drink.orders else puts '=>Please select either 1 or 2' end end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。