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

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

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

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

Q&A

解決済

2回答

897閲覧

Ruby言語で自作したクラスにif文を書く方法

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

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

0グッド

1クリップ

投稿2021/06/18 17:04

Ruby言語で自作したクラスにif文を埋め込んで書くコードの書き方がわかりません。
a が 1の時は、steakを表示して、2 の時は、soup を表示して、それ以外では、toast を表示するというクラスを作ったのですが、エラーになってしまいます。
呼びだすときに条件分岐で使われる数字を引数にしているのですが、それでエラーになっているのでしょうか?

Ruby

1class Restaurant 2 def menu(a) 3 p 'Food menu' 4 end 5 6 def food(b) 7 if a == 1 8 p 'steak' 9 10 elsif a == 2 11 p 'soup' 12 else 13 p 'toast' 14 end 15 end 16end 17 18restaurant = Restaurant.new 19restaurant.menu(1) 20restaurant.food()

これを実行すると、 :6 in 'food': wrong number of aruguments(given 0, expected 1)(ArgumentError) となります。

何処をどう修正したら正常に動作しますか?

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

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

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

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

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

m.ts10806

2021/06/18 19:15

質問は編集できますので。
raccy

2021/06/19 00:28

> BeatStarさん 下記の注釈にも書かれていますが、一般に「マルチポスト」は複数のサイトに投稿することを意味します。 https://teratail.com/help#posted-otherservice また、マルチポスト自体がどんな場合でも非推奨になるのでは無く、しばらく待ったが回答が得られなかったと言った納得できる理由と解決後のアフターフォローがあれば、やっても問題ないとされています。 あなたの指摘は同じteratail上に同じ質問があると言うことであり、下記の「過去に投稿した質問と同じ内容の質問」に該当すると思われます。 https://teratail.com/help/avoid-asking 以前の投稿の編集で済むというのであれば、m.ts10806さんのような指摘で十分です。 「マルチポスト」と「質問の重複」では、その意味や対応方法が全く異なりますので、混同するような指摘は避けた方がよろしいかと思います。
BeatStar

2021/06/19 01:26

raccyさん 確かにそうですね。ちょっと修正します。
退会済みユーザー

退会済みユーザー

2021/06/19 13:48 編集

m.ts10806さんへ 編集機能というものがあるんですね。見落としてました。教えてくださりありがとうございます。 こちらの質問だけ残して、もう一つの同じ見出しの質問を削除しようとしたのですが、「削除リクエストを送るための条件を満たしていません。」と表示されてしまい、削除できません。 なので、前の質問は残ったままになってしまっていることについては、ご了承ください。
退会済みユーザー

退会済みユーザー

2021/06/20 16:36

回答がつくと、削除対象の質問から外れるのですね。覚えておきます。 一応運営にも問い合わせときます。 教えて下さり、ありがとうございました。
guest

回答2

0

ベストアンサー

文法の基本から復習した方が良いです。

def foodの中で未定義のaを参照している
・引数1つとして定義されたfoodを引数無しで呼び出している

投稿2021/06/18 23:55

編集2021/06/18 23:56
otn

総合スコア84566

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

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

退会済みユーザー

退会済みユーザー

2021/06/19 13:41

正常に動作しました。 回答ありがとうございます。
guest

0

それはifを書いたからでているエラーではないです。
ifとは全く関係ないところで書いているのがまずいです

翻訳すると、
:6 in 'food': 間違った数の引数(given 0, expected 1)(ArgumentError)
っていってますよ

投稿2021/06/18 22:57

y_waiwai

総合スコア87776

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

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

退会済みユーザー

退会済みユーザー

2021/06/19 13:41

正常に動作しました。 回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問