友人からSyntaxエラーがあって動かないよとメッセージをもらったので、早速プログラム実行してエラーを吐かせようとしたら、Rubyプログラムの実行コマンドであるrubyをターミナル上で実行してもなにも結果が返ってこないという状況に陥ってます。
現状[rb hoge.rb]をターミナル上で実行しても結果がなにも返ってこず、下記添付画像のようになります。
裏で何が起きているのか全く想像もつかないので教えていただきたいです。
プログラム自体はGithubに上げてあるので参考までに載せておきます。
Githinに上げてあるリポジトリのリンク
構文エラー箇所もわかればお伝えいただけると助かります。
Ruby
1class Drink 2 attr_reader :name, :price 3 4 def self.coke 5 self.new 120, :coke 6 end 7 8 def self.redbull 9 self.new 200, :redbull 10 end 11 12 def self.water 13 self.new 100, :water 14 end 15 16 def initialize price, name 17 @name = name 18 @price = price 19 end 20 21 def ==(another) 22 self.name == another.name 23 end 24 25 def eql?(another) 26 self == another 27 end 28 29 def hash 30 name.hash 31 end 32 33 def to_s 34 "<Drink: name=#{name}, price=#{price}>" 35 end 36end
Ruby
1class VendingMachine 2 USEABLE_MONEY = [10, 50, 100, 500, 1000] 3 attr_reader :total, :sale_amount 4 5 def initialize 6 @total = 0 7 @sale_amount = 0 8 @drink_table = {} 9 5.times { store Drink.coke } 10 end 11 12 def insert(money) 13 USEABLE_MONEY.include?(money) ? nil.tap{@total += money } : money 14 end 15 16 def change 17 total.tap { @total = 0} 18 end 19 20 def store(drink) 21 nil.tap do 22 @drink_table[drink.name] = {price: drink.price, drinks: [] } unless @drink_table.has_key? drink.name 23 @drink_table[drink.name][:drinks] << drink 24 end 25 end 26 27 def purchase(drink_name) 28 if purchaseable? drink_name 29 drink = @drink[drink_name][:drinks].pop 30 @sale_amount += drink.price 31 @total -= drink.price 32 [drink,change] 33 end 34 end 35 36 def purchaseable?(drink_name) 37 purchaseable_drink_names.include? drink_name] 38 end 39 40 def purchaseable_drink_names 41 @drink_table.select{|_, info| info[:price] <= total && info[:drinks].any? }.keys 42 end 43 44 def stock_info 45 Hash[@drink_table.map {|name, info| [name, { price: info[:price], stock: info[:drinks].size }] }] 46 end 47 48end
回答1件
あなたの回答
tips
プレビュー