20
20

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 2018-03-04

1.ヒアドキュメントとは

  • ヒアドキュメント(別の呼び方としてヒア文字列、heredocなど)は、文字列リテラルを、シェルスクリプトやプログラミング言語の中に埋め込むための1つの方法である。ー ja.wikipedia.org
  • 簡単に説明すると、長い文字列(SQLクエリ、JSONデータ)を作成するときインデントをつけて見やすく綺麗に書き方です ーこれはただ自分の考えです。

2.ヒアドキュメント種類

###2.1 <<EOS と <<-EOS

eos.rb
name = "2行目"

str1 = <<EOS
  ダブルクォート文字列です。
  #{name}
EOS

str2 = <<-EOS
  ダブルクォート文字列です。
  #{name}
EOS

puts str1
puts str2

結果
Screen Shot 2018-03-04 at 22.13.17.png
両方はダブルクォート文字列を返すので変数を渡せばちゃんと表示できます。

2.2 <<~EOS

eos.rb
puts <<-EOS
  インデントあり。
EOS

puts <<~EOS
  インデントなし。
EOS

結果
Screen Shot 2018-03-04 at 22.18.48.png
<<-EOSと同じいダブルクォート文字列を返しますが、インデントは使えないです。

2.2 <<~'EOS'

eos.rb
name = "EOS"
puts <<'EOS'
  シングルクォート#{name}
EOS

結果
Screen Shot 2018-03-04 at 22.24.15.png
シングルクォートを返すので変数を渡しても文字列として表示されます。

2.2 ```<<`EOS````

eos.rb
system_command = <<`EOS`
  echo "current date is"
  date
EOS

puts system_command

結果
Screen Shot 2018-03-04 at 22.26.52.png
OS(システム)のコマンドを実行できます。
2.5 ネストヒアドキュメント

eos.rb
puts <<-'EOS1', <<-EOS2
  i am EOS1
EOS1
  i am EOS2
EOS2

結果
Screen Shot 2018-03-04 at 22.30.50.png

3.おまけ

ヒアドキュメントは色々な種類があるので適当に使えばソースコードは見やすくなってると思います。

20
20
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
20
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?