149
112

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.

Rubyでヒアドキュメントを使う

Last updated at Posted at 2014-08-23

プロダクションコードでヒアドキュメントを使うことはあまり無いかもしれないけど、文字列やJSONデータを扱いたいちょっとしたサンプルコードを書くときによく使うのでメモ。

1. 基本

「<<」識別子を使う。「<<」識別子の後ろにヒアドキュメントの始まりと終わりを示す文字列の識別子を書く。
EOS(End Of String)とEOL(End Of Line)が使われている例が多いが、統一されていれば何を使っても問題ない。

json = <<'EOS'
{
  "language": "Ruby"
}
EOS

2. 変数・定数の展開をする場合

ヒアドキュメントの始まりと終わりを示す識別子をダブルコーテーションで囲うか、コーテーション無しの識別子を使う。あとは通常の展開記法を用いればOK。
シングルコーテーションを使うと展開されない。

lang = 'language'
RUBY = 'Ruby'

json = <<"EOS" # ここをダブルコーテーションで囲う
{
  "#{lang}": "#{RUBY}"
}
EOS

json = <<EOS # コーテーション無しでもOK
{
  "#{lang}": "#{RUBY}"
}
EOS

3. 「<<-」演算子を使ってインデントを行う

「<<」の代わりに「<<-」を使うと、終端の識別子をインデントすることができる。


def output
  json = <<-"JSON"
{
  "language": "Ruby"
}
  JSON  
  # ここのインデントを調整できる

  puts json
end

output

「<<」演算子だと以下のようにしかできない。

def output
  json = <<"JSON"
{
  "language": "Ruby"
}
JSON 
# かならず行頭に識別子が無くてはならない

  puts json
end

output
149
112
2

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
149
112

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?