ヒアドキュメントとは
- 行指向文字列リテラルを使って文字列を作る方法
- 複数行の文字列はヒアドキュメントを使ったほうが書きやすい
作り方
<<識別子 行 行 行 識別子
- 先頭は
<<
で始める - 識別子は最初と最後で同じ文字列を使う
TEXT
、EOF
、EOB
がよく使われる- 記述する文字列の中に含まれない文字列を使うこと
- ヒアドキュメントの中では式展開が使える
<<'EOF'
のように識別子をシングルクォートで囲むと式展開は使えない
作成例:
# 変数に代入もできる moji = <<EOF test test test EOF # pメソッドだと p moji => "test\ntest\ntest\n" # putsメソッドだと puts moji => test test test
メソッドの中に入れる
def moji <<-EOF test test test EOF end puts moji => test test test
ここで注意なのが、<<-EOF
と、-
を入れている点。
識別子の左にハイフンを入れないと、この場合こんなエラーがでる。
can't find string "EOF" anywhere before EOF syntax error, unexpected end-of-input, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
つまり、表示されない。 よって、ハイフンを入れる。
また、-
なら文字列のインデントが表示される。
<<-EOF
def moji <<-EOF test test test EOF end puts moji => test test test
~
だと、インデントは無視される。
<<~EOF
def moji <<~EOF test test test EOF end puts moji => test test test