構文基礎レベル

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

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(補間あり)の使い分けが重要です。

問題一覧へ戻る