構文基礎レベル
次のプログラムを実行すると何が表示されますか?
lang = "Ruby" text = <<END Hello, #{lang}! END p text
- 1"Hello, Ruby!\n" と表示される
- 2"Hello, \#{lang}!\n" と表示される
- 3"Hello, lang!\n" と表示される
- 4エラーが発生する
解説
<<END(クォートなし)のヒアドキュメントは、ダブルクォート文字列と同じように文字列補間(#{...})が有効です。#{lang} は変数 lang の値 "Ruby" に展開されるため、結果は "Hello, Ruby!\n" になります。
prob-035 と比較すると、ヒアドキュメントのクォートの有無で補間の挙動が変わることがわかります。<<'END'(補間なし)と <<END(補間あり)の使い分けが重要です。