n番煎じでしょうが、ヒアドキュメントで感動したのでQiitaに投稿します。
まえおき
ヒアドキュメントはSQLとか複数行にわたって書く必要があるときに便利です
ですが、メソッドに渡したいときは変数に格納する必要があると思っていました。。。
def heredoc(document)
puts document
end
document = <<-EOD
ヒアドキュメント
EOD
heredoc(document)
#=> ヒアドキュメント
しっったこと#1
ところがどっこい!
<<
か<<-
と識別子を引数とすることで余分な(?)変数をなくすことができます。
def heredoc(document)
puts document
end
heredoc(<<-EOD)
ヒアドキュメント
EOD
#=> ヒアドキュメント
しっったこと#2
さらにさらに!
タイトルにある通り、複数のヒアドキュメントをメソッドの引数にできます!
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
ヒアドキュメントがひとつだとグッと読みやすくなるケースが多いように思います
ですが、ヒアドキュメントが複数ある場合はどうみても読みづらいです。。。