#Rubyのヒアドキュメント
文字列の書き方の一つ。複数行に渡る長い文字列を作成するときに便利な表記方法。<<
と<<-
、<<~
で少し違うのでまとめておきます。
基本の使い方
<<識別子
1行目
2行目
3行目
識別子
#<<
の場合
foo = <<TEXT
これはヒアドキュメント
複数行の文字列を作成するのに便利です。
TEXT
puts a
出力
=> これはヒアドキュメント
複数行の文字列を作成するのに便利です。
###注意
<<
を使うと最後の識別子をインデントできない。上の例なら2つ目のTEXTの前にTabとか空白をいれられない。エラーになってしまいます。
#<<-
の場合
<<-
を使えば、識別子をインデントできます。メソッドの内部でヒアドキュメント使う場合など、識別子をインデントしたい場合に便利です。
foo = <<-TEXT
これはヒアドキュメント
複数行の文字列を作成するのに便利です。
TEXT
#↑空白がはいっていてもエラーにならない。
puts a
出力
=> これはヒアドキュメント
複数行の文字列を作成するのに便利です。
###注意
文字列をインデントしていると出力もインデントされちゃう。
def method
<<-TEXT
インデントしたら
出力もインデントされちゃう。
だから出力の事考えてこういうふうに
かかないといけない。プログラムは見た目悪くなる。
TEXT
end
出力
インデントしたら
出力もインデントされちゃう。
だから出力の事考えると行頭から書くことになる。
プログラムは見た目悪くなる。
#<<~
の場合
Ruby 2.3以降で実装された構文。
内部の文字列をインデントさせても空白部分が無視されます。
最初の行のインデントが基準になる。例えば、2行目を1行目より一つ深くインデントすると出力は2行目のみがインデントされているようになる。
def method
<<~TEXT
インデントした
1行目よりも深くインデントした。
TEXT
end
出力
インデントした
1行目よりも深くインデントした。