文字列基礎レベル
次のプログラムを実行すると何が表示されますか?
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" です。