文字列基礎レベル

次のプログラムを実行すると何が表示されますか?

a = "Ruby"
b = a
a = a + " on Rails"
p b
  • 1"Ruby"
  • 2"Ruby on Rails"
  • 3nil
  • 4NoMethodError が発生する

解説

b = a は、b が変数 a を追跡するという意味ではありません。代入時点で a が参照していた文字列オブジェクトを b も参照します。その後 a = a + " on Rails" では新しい文字列オブジェクトが作られ、a だけがそちらへ付け替わります。b は元の "Ruby" を参照し続けるため、表示は "Ruby" です。

問題一覧へ戻る