お世話になります。RUBY技術者認定試験合格教本のGold問題でよくわからない部分があったので、質問します。
###問題・解答・解説
問題
以下のコードを実行すると何が表示されますか?
Ruby
1class Object 2 X = "X" 3 def self.const_missing a 4 p "#{a}" 5 end 6end 7Y
解答
Ruby
1"Y"
解説
定数が見つからない場合、Moduleクラスのconst_missingが実行されます。このメソッドはオーバーライド可能です。
出題コードには定数Yは存在しません。Objectクラスにはconst_missingが定義されています。トップレベルはObjectクラスなので、Objectクラスに定義されたconst_missingが実行され、Yが表示されます。
###わからなかった点、認識があっているか確認したい点
const_missingは定義されていない変数を参照したときに呼び出されることはわかりました。
あっているか確認したいのですが、Xは定義されている変数であるため、その中でconst_missingを呼ぶと、結局はconst_missingは呼ばれないと言う認識で合っていますでしょうか?
一方でYは定数として定義されていないため、classの外であるトップレベルはObjectクラスのconst_missingが呼ばれると言うことでしょうか?
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/13 06:02
2020/06/13 06:28
2020/06/13 06:54