もはやrubyのヒアドキュメントは<<~
でほぼOKじゃなかろうか。
.ruby
def what_to_buy
onion = "たまねぎ"
text = <<~EOS
買うものリスト:
* にんじん
* #{onion}
* スパイス
+ ターメリック
+ クミン
+ コリアンダー
EOS
puts text
end
結果
買うものリスト:
* にんじん
* たまねぎ
* スパイス
+ ターメリック
+ クミン
+ コリアンダー
<<~
には以下の特徴があります。
- 区切り文字(ここでは
EOS
)をインデントして書けるので美しい - 共通インデントは削る。(上では全ての行に4つ以上スペースが有るので、全行の先頭4スペースを削る)
-
#{onion}
の様に式展開する
稀に<<~
では駄目な場合も有るので一応他の書き方も。
書式 | 説明 |
---|---|
<<EOS 〜 EOS |
式展開される。終端のEOSは必ず行頭に書く。 |
<<'EOS' 〜 EOS |
式展開されない。終端のEOSは必ず行頭に書く。 |
<<-EOS 〜 EOS |
式展開される。終端のEOSをインデントできる。 |
<<-'EOS' 〜 EOS |
式展開されない。終端のEOSをインデントできる。 |
※ 上記4つはどれも<<~
が持つ**共通インデントを削る
**という効果は有りません。