ヒアドキュメント

リファレンスのなぞり書き。

基本文法

<<[(-|~)]["'`]識別子["'`]
   ...
識別子

<<[(-|~)]

<<

  • ヒアドキュメント内の空白文字は全て文字列に含まれる。
  • 終端の識別子は行頭にある必要がある。=インデントされていると識別子とみなされない。
string = 
  <<EOS
    line1
      line2
EOS
=> "    line1\n      line2\n"
string = 
  <<EOS
    line1
      line2
  EOS
EOS
=> "    line1\n      line2\n  EOS\n"

行頭にない(=インデントされた)識別子は単なる文字列と見なされる。

<<-

  • ヒアドキュメント内の空白文字は全て文字列に含まれる。
  • 終端の識別子は行頭になくてよい。=インデントされていても識別子とみなされる。
string = 
  <<-EOS
    line1
      line2
  EOS
=> "    line1\n      line2\n"

<<~

  • ヒアドキュメント内の空白文字は、最もインデントが浅い行を基準として取り除かれる。
  • 終端の識別子は行頭になくてよい。=インデントされていても識別子とみなされる。
string = 
  <<~EOS
    line1
      line2
  EOS
=> "line1\n  line2\n"

最もインデントが浅いline1を基準として、そこからの相対的なインデントのみが空白文字となっている。

["'`]識別子["'`]

それぞれの囲み文字で囲まれた文字列として評価される。

'

n = 10
<<'EOS'
  #{n}
EOS
=> "  \#{n}\n"

"

n = 10
<<"EOS"
  #{n}
EOS
=> "  10\n"

なし

"と同等。

n = 10
<<EOS
  #{n}
EOS
=> "  10\n"

`

<<`EOS`
  echo hoge
EOS
=> "hoge\n"