構文応用レベル
次のプログラムを実行すると何が表示されますか?
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で導入されました。メソッドの中でヒアドキュメントを書くときにコードのインデントを合わせながら文字列内の余分な空白を自動除去できるため、実務でよく使われます。