k-tokitoh

ヒアドキュメント

2019-09-28

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

基本文法

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

<<[(-|~)]

<<

  • ヒアドキュメント内の空白文字は全て文字列に含まれる。
  • 終端の識別子は行頭にある必要がある。=インデントされていると識別子とみなされない。
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"