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

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

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

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

Q&A

解決済

1回答

1243閲覧

Rubyの勉強をしています。。この考え方で合っていますか?

tuvalu

総合スコア136

Ruby

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

1グッド

0クリップ

投稿2017/07/05 01:53

ただいま、Rubyの試験にトライしようと、勉強しています。
http://www.school.ctc-g.co.jp/ruby/training_ruby_gold_41_50.html
CTC教育サービスさんの問題を解いていて、わからないので教えてください

問48.下記のコードの説明として正しいものを選択してください。

[コード]
class Foo
def initialize(obj)
obj.foo
end
def foo
puts "foofoofoo"
end
end
class Bar
def foo
puts "barbarbar"
end
end
Foo.new(Bar.new)

1. このコードを実行すると「foofoofoo」と出力される 2. このコードを実行すると「barbarbar」と出力される 3. このコードを実行するとシンタックスエラーになる 4. このコードを実行すると呼び出されるメソッドが存在しないためエラーになる

質問1.この考え方で合っていますでしょうか?
これは、(Bar.new)のオブジェクトが(obj)に代入される
代入された(obj) は obj.foo によって実行される
実行されたのは Barクラスのオブジェクトだから Barクラスのfoo メソッドが
呼ばれ "barbarbar" と表示される。

質問2.となると、Fooクラスの foo メソッドを呼び出して、
"foofoofoo" と表示させたい時はどうすればいいですか?

変な質問ですみません。よろしくお願い致します。

koutah👍を押しています

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

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

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

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

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

mattn

2017/07/05 01:57

ソースコードはコードブロックを使って書いて下さい。今からでも修正可能です。
guest

回答1

0

ベストアンサー

質問1.この考え方で合っていますでしょうか?(後略)

はい、それで間違いありません。

質問2.となると、Fooクラスの foo メソッドを呼び出して、"foofoofoo" と表示させたい時はどうすればいいですか?

Fooのインスタンスが必要ですので、Foo.new.fooなどで実行できます。

投稿2017/07/05 01:57

maisumakun

総合スコア145183

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

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

tuvalu

2017/07/05 02:15

ご回答ありがとうございます。 Foo.new.foo ArgumentError: wrong number of arguments (given 0, expected 1) となってしまいます。他にありますでしょうか?なにをやってもArgumentErrorです。。 誠に情無い話しですが、この場合のFooクラスのインスタンスの作り方を 教えてください。
maisumakun

2017/07/05 02:19

何かしら.fooに応答するオブジェクトが必要なので、Foo.new(Bar.new).fooのようにすれば、とりあえずは実行できます。
tuvalu

2017/07/05 02:33 編集

なるほど! obj.foo によって(え〜〜っと、特異メソッド?) 『fooに応答するオブジェクト』が必要なんですね。 つまり、今回のケースでは、いきなりFooのインスタンスは作れないみたいですので、 まずはBarのインスタンスが必要になる、それを通して、仰ったFoo.new(Bar.new).foo を 実行すればいい、ということですね!ああ、できましたできました! 勉強になります。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問