RubyExamination(REx)というサイトでRubyを勉強中です。
以下の問題に関して良く分からないので、教えていただきたいです。
コードを実行したときにどのようなことが起こるか、という問題なのですが。
ruby
1def foo 2 self + 2 3end 4 5p 1.foo
- 選択肢
1と表示される
3と表示される
SyntaxErrorが発生する
fooと表示される
個人的な考えでは、
Integerクラスのメソッドとしてはfooは存在しないため、NoMethodErrorが出るのではないか、と思い、実際に手元でもそうなったのですが、選択肢の中に該当するものはありません。
(上記サイトがRuby2.1が対象で、手元は2.6なので、念の為2.1の環境も整えましたが、やはりNoMethodErrorでした)
また、解説を見てもヒント的なものが出ているだけで、これが正答、ということは書いてありません。(解説から類推すると 3
が答えっぽい)
オープンクラスの適用で
ruby
1class Integer 2 def foo 3 self + 2 4 end 5end 6 7p 1.foo
とすれば、答えとしては 3
が返ってきました。
上の方のソースでも、特定の条件下では 3
が返ってくることがあるのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/06 16:18
2022/02/06 16:27
2022/02/06 18:06 編集
2022/02/06 22:10
2022/02/06 23:39