Ruby資格 定数の警告

[改訂2版]Ruby技術者認定試験合格教本(Silver/Gold対応)Ruby公式資格教科書より

以下の問題の違いがわかりますか?

問1 以下のコードを実行するとどうなりますか。

MAX=10
print MAX
MAX=100
print MAX

問2 以下のコードを実行するとどうなりますか。

HOGE = "hoge"
HOGE.gsub!("hoge", "piyo")
print HOGE

2問ともRuby試験でお馴染みの定数警告の文法問題です。

答えは、

問1が10表示された後、警告が表示され100と表示される

問2が警告は発生せず、「piyo」が表示されるです。

この2つの問題の違いは、破壊的メソッドを使っているかということだけです。

問2は、破壊的メソッドを呼び出しているだけなので、警告は発生せず、文字列が置き換わっています。

See Also