LoginSignup
9
0

More than 5 years have passed since last update.

Ruby|複数のヒアドキュメントをメソッドの引数にする

Posted at

n番煎じでしょうが、ヒアドキュメントで感動したのでQiitaに投稿します。

まえおき

ヒアドキュメントはSQLとか複数行にわたって書く必要があるときに便利です:smile:
ですが、メソッドに渡したいときは変数に格納する必要があると思っていました。。。

def heredoc(document)
  puts document
end

document = <<-EOD
ヒアドキュメント
EOD

heredoc(document)
#=> ヒアドキュメント

しっったこと#1

ところがどっこい!
<<<<-と識別子を引数とすることで余分な(?)変数をなくすことができます。

def heredoc(document)
  puts document
end

heredoc(<<-EOD)
ヒアドキュメント
EOD
#=> ヒアドキュメント

しっったこと#2

さらにさらに!
タイトルにある通り、複数のヒアドキュメントをメソッドの引数にできます!:thumbsup:

def heredocs(doc1, doc2)
  puts "doc1"
  puts doc1
  puts "doc2"
  puts doc2
end

heredocs(<<-DOC1, <<-DOC2)
ヒアドキュメントのテキストです。#1
DOC1
ヒアドキュメントのテキストです。#2
DOC2
#=> 
# doc1
# ヒアドキュメントのテキストです。#1
# doc2
# ヒアドキュメントのテキストです。#2

わかりやすいように識別子を分けていますが、識別子が同じでも動くようです。。。

def heredocs(doc1, doc2)
  puts "doc1"
  puts doc1
  puts "doc2"
  puts doc2
end

heredocs(<<-DOC1, <<-DOC1)
ヒアドキュメントのテキストです。#1
DOC1
ヒアドキュメントのテキストです。#2
DOC1
#=> 
# doc1
# ヒアドキュメントのテキストです。#1
# doc2
# ヒアドキュメントのテキストです。#2

ヒアドキュメントがひとつだとグッと読みやすくなるケースが多いように思います:smile:
ですが、ヒアドキュメントが複数ある場合はどうみても読みづらいです。。。

9
0
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
9
0