質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

4298閲覧

Ruby インスタンス変数での配列への代入

haru-kun

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/04/26 08:47

下記のコードを作成しました。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

@new_orderを共通して持っているがために、毎回同じハッシュを使ってpushする形となっているため、次にadd_menuをした際に同じハッシュへ上書きする形となっているものと思われます。

インスタンス変数の@new_orderではなく、ローカル変数のnew_orderを、add_menuの実行のたびに作成する、という形のほうが適当ではないかと思います。

投稿2020/04/26 08:56

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問