LoginSignup
111

More than 5 years have passed since last update.

posted at

updated at

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

プロダクションコードでヒアドキュメントを使うことはあまり無いかもしれないけど、文字列や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

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
What you can do with signing up
111