構文応用レベル

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

def message
  <<~TEXT
    Hello
    World
  TEXT
end

p message
  • 1" Hello\n World\n" と表示される
  • 2"Hello\nWorld\n" と表示される
  • 3" Hello\n World\n" と表示される
  • 4エラーが発生する

解説

<<~(スクイグリーヒアドキュメント)は、コンテンツ行の中で最もインデントが少ない行を基準にして先頭の空白を除去します。この例では Hello World がともに4スペースのインデントを持ち、これが最小値なので4スペースが除去されます。結果は "Hello\nWorld\n" です。

<<~ はRuby 2.3で導入されました。メソッドの中でヒアドキュメントを書くときにコードのインデントを合わせながら文字列内の余分な空白を自動除去できるため、実務でよく使われます。

問題一覧へ戻る