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

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

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

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

Q&A

解決済

2回答

660閲覧

Ruby コードについて

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

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

0グッド

0クリップ

投稿2021/06/17 05:45

以下のコードについて、2点質問をお願いします。
◆1つ目
8行目の if val の必要性が理解できないです。
このif valは何の役割がありますでしょうか?

◆2つ目
問題解説文
「13行目のc.valはattr_accessorよりアクセスされます。
initializeメソッドで初期化が行われていないため、nilが返されます。」

解説より答えは、選択肢4ですが、
7行目と8行目の間に @val = 0 などの記述があればよいのではと思っているのですが、認識があっていますでしょうか?
よろしくお願いします。

1: class C
2: @val = 3
3: attr_accessor :val
4: class << self
5: @val = 10
6: end
7: def initialize
8: @val *= 2 if val
9: end
10: end
11:
12: c = C.new
13: c.val += 10
14:
15: p c.val

選択肢1
13と表示される

選択肢2
16と表示される

選択肢3
20と表示される

選択肢4
エラーになる

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

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

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

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

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

guest

回答2

0

ベストアンサー

8行目の if val の必要性が理解できないです。

このif valは何の役割がありますでしょうか?

これはRubyの文法を理解しているかどうかを問うための例題なので、
個々の文の意味を問うのは無意味です。
強いて言えば、「回答者が後置ifの意味を理解しているかを確認するため」とか「@val *= 2 を実行しなくする役割」でしょうか。

@val = 0 などの記述があればよいのではと思っているのですが、

「よい」とはどういう意味ですか?エラーを出さなくするための方法を考えたと言うことであれば、それも1つの手ですね。意味があるかどうかは別ですが。

投稿2021/06/17 06:42

otn

総合スコア85762

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

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

退会済みユーザー

退会済みユーザー

2021/06/18 00:43

回答ありがとうございます。 分からないことが多いため、一文一文の意味を知りたいので、 質問させていただきました。 今後も頑張りたいと思います。
otn

2021/06/18 01:40

> 一文一文の意味を知りたいので、 プログラムの中での意味を知りたいということでは無く、 文法を知らないので教えて欲しいと言うことだったのでしょうか? 文法は入門書でちゃんと学んだ方が良いです。
guest

0

このif valは何の役割がありますでしょうか?

そういう問題だから、以上の意味のない、実用性を考えたものではないコードなだけではないでしょうか。

7行目と8行目の間に @val = 0 などの記述があればよいのではと思っているのですが、認識があっていますでしょうか?

たしかにそれで動作はします。ただ、試験問題で「どうすれば正常に動くか」そのものを問われた場合はともかく、そうでない出題コードに選択肢以上の考察を行ってもさほど意味をなさないかなと思います。

投稿2021/06/17 06:23

maisumakun

総合スコア145930

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

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

退会済みユーザー

退会済みユーザー

2021/06/18 00:40

いつも回答ありがとうございます。 問題については深追いをせずに、引き続き頑張りたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問