超簡単ドリンク注文アプリケーションに値段をつけてみる
こちらは前回の続きです。
前回のアプリケーションはこちら
https://qiita.com/pontarou194/items/708452b47464bfcad122
条件
・実行時、どのようなドリンクがあるかを表示させる
・ドリンクには番号をつける
・選ばれた番号と同じドリンク名を表示させる
・ドリンクに値段をつける
・ドリンクの注文数を訪ねて、入力された値に対して合計額を表示させる
擬似コード
def
お茶が選ばれた場合、値段を表示
注文数を入力
合計額を表示
end
def
コーヒーが選ばれた場合、値段を表示
注文数を入力
合計額を表示
end
def
ビールが選ばれた場合、値段を表示
注文数を入力
合計額を表示
end
def
サイダーが選ばれた場合、値段を表示
注文数を入力
合計額を表示
end
# それぞれのドリンクメニューの値段を残す
otya = 100
coffee = 200
beer = 300
saida = 400
# ここから先、変数をつけたの以外は前回と一緒なので、そのまま記述します
puts "何を飲みたいですか?"
drink_menu = ["お茶","コーヒー","ビール","三ツ矢サイダー"]
drink_menu.each.with_index(1) do |drink_name, number|
puts "#{number}:#{drink_name}"
end
case gets.to_i
when 1
otya(otya)
when 2
coffee(coffee)
when 3
beer(beer)
when 4
saida(saida)
else
puts "無効な入力値です"
end
実際にコーディングしてみる
def otya(otya)
puts "あなたが選んだのはお茶"
puts "お茶の値段は100円です"
puts "いくつ注文しますか?"
order_quantity = gets.to_i
total_price = order_quantity * otya
puts "合計#{total_price}円です"
end
def coffee(coffee)
puts "あなたが選んだのはコーヒー"
puts "コーヒーの値段は200円です"
puts "いくつ注文しますか?"
order_quantity = gets.to_i
total_price = order_quantity * coffee
puts "合計#{total_price}円です"
end
def beer(beer)
puts "あなたが選んだのはビール"
puts "ビールの値段は300円です"
puts "いくつ注文しますか?"
order_quantity = gets.to_i
total_price = order_quantity * beer
puts "合計#{total_price}円です"
end
def saida(saida)
puts "あなたが選んだのは三ツ矢サイダー"
puts "サイダーの値段は300円です"
puts "いくつ注文しますか?"
order_quantity = gets.to_i
total_price = order_quantity * saida
puts "合計#{total_price}円です"
end
otya = 100
coffee = 200
beer = 300
saida = 400
puts "何を飲みたいですか?"
drink_menu = ["お茶","コーヒー","ビール","三ツ矢サイダー"]
drink_menu.each.with_index(1) do |drink_name, number|
puts "#{number}:#{drink_name}"
end
case gets.to_i
when 1
otya(otya)
when 2
coffee(coffee)
when 3
beer(beer)
when 4
saida(saida)
else
puts "無効な入力値です"
end
変数及び、引数の勉強になるかと思って使ってみました。
otya(otya)が呼び出された際に、otya(otya)メソッドに飛んで、otya(otya)メソッドではotyaの値段を参照しているため、
otyaの値段と入力された数をかけた合計額が表示される。
動作確認
何を飲みたいですか?
1:お茶
2:コーヒー
3:ビール
4:三ツ矢サイダー
3
あなたが選んだのはビール
ビールの値段は300円です
いくつ注文しますか?
4
合計1200円です
今回は以上となります。
引数便利ですよね。
ここは違う、このようにしたほうがセンスが良い等ございましたら、ご指摘いただけますと幸いです。
最後までみていただきありがとうございます。
※@scivola さんからアドバイス頂いた、リファクタリングverを下記に記述しました。
https://qiita.com/pontarou194/items/c7e35b6eed6fce78e999