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"