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

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

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

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Ruby

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

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Q&A

解決済

1回答

544閲覧

ターミナル上で【ruby hoge.rb】を実行しても結果が返ってこない。

MasakiSakamoto

総合スコア13

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Ruby

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

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

0グッド

1クリップ

投稿2018/09/27 10:01

編集2018/09/27 10:22

友人から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

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

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

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

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

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

dice142

2018/09/27 10:19

先に回答してしまいましたが、コードはリンクではなく質問文に直接書いていただけると助かります。
MasakiSakamoto

2018/09/27 10:23

コードを直接ベタ貼りさせていただきました。
guest

回答1

0

ベストアンサー

クラスの定義しかしていないからではないでしょうか?

[追記]

実行したコードはクラスの定義のみ書かれています。
言ってしまえば表示をする処理がどこにもないので、何も出力されません。

このクラスを使って何かするのであればインスタンス化した変数で処理をする必要がありますが、
ご提示いただいたコードではいわゆる設計図を書いただけなので、何も起きません。
(文法エラーがあればその旨が出ますが、正しく書けてるので何も表示がないまま実行が終わったということです。)

投稿2018/09/27 10:18

編集2018/09/27 10:36
dice142

総合スコア5158

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

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

MasakiSakamoto

2018/09/27 10:24

クラスを継承していないという意味でしょうか? まだまだ初心者なので理解度低くて申し訳ありません。
dice142

2018/09/27 10:37

回答に追記しました。 これはあなたが書いたプログラムではないのですか? クラスを書けるならどういう順で処理が行われるのか分かる気がするのですが。
MasakiSakamoto

2018/09/27 10:40

丁寧にご説明いただきありがとうございます。 その通りでした。vending_machine.rbを実行したらsyntaxエラー二つくらい出てきました。助かりました!
dice142

2018/09/27 10:42

(vending_machine.rbに関しては私はノータッチでしたが)私の回答で解決されたようで良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問