5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

<<~TEXT Rubyのヒアドキュメントのまとめ TEXT

Last updated at Posted at 2018-10-14

#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行目よりも深くインデントした。
5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?