読者です 読者をやめる 読者になる 読者になる

xengineer’s diary

結果、メモ的な内容になっています。

rubyのヒアドキュメント

プルリのレビューをしていたら、

  method(arg1, <<-EOS.strip_heredoc, arg2)
    "hoge"
  EOS

的なコードが出現して、「これは一体なんだろう・・・」と固まりました。

グーグル先生に聞いたら、こんなサイトを紹介いただきまして、無事解決しました。

http://docs.ruby-lang.org/ja/1.9.3/doc/spec=2fliteral.html (この記事は、1.9.3の記事のようですが、僕の環境は、2.2.3です)

どうやら、rubyではヒアドキュメントはとても便利なようで、

その要素が沢山詰まったコードのようです。

  1. rubyのヒアドキュメントは、"<<"ではじまるけど、"<<-"で開始した場合、終端行をインデントして書ける
  2. rubyのヒアドキュメントは、methodをチェインして繋げられる
  3. rubyのヒアドキュメントは、methodの引数として渡した場合、ヒアドキュメント全体を引数として渡せる
    • つまり、上のコードでいうと、第二引数には、"hoge"が渡る
  4. strip_heredocをコールした場合、行頭の余分な空白を削除してくれる

などなど、他にもあると思いますが、勉強になりました。