Rubyのヒアドキュメントの話

| | コメント(4)

Akasaka.rbのIRCでRubyのヒアドキュメントの話が盛り上がりましたので、ちょっとだけご紹介します。Rubyでは、PerlやPythonといったスクリプト言語と同じように、ヒアドキュメントが利用できます。例えば、次のようなケースです。

hello = <<-EOS
Hello, World!
EOS
puts hello.reverse

上記の例では、一時変数としてhello変数を利用していますが、この一時変数をなくすこともできます。EOSの直後に閉じ括弧を置くとエラーになるので注意しましょう。

(<<-EOS
Hello, World!
EOS
).reverse

さらに、おそらくPerlの文法からだとおもうのですが、次のような書き方もできます。

(<<-EOS).reverse
Hello, World!
EOS

Rubyって本当にキモいですね!!

コメント(4)

Yugui :

複数のヒアドキュメントを同時に書くとキモさ倍増。

find_by_sql(:first, :joins => <<-'JOIN', :conditions => <<-'COND'
INNER JOIN hoge ON hoge.huga_id = hugu.id
LEFT OUTER JOIN unyu.hoge_id = hoge.id
JOIN
......
COND

なんてね。

takai :

その発想はなかった!

ujihisa :

(<<-EOS).reverse
Hello, World!
EOS

括弧は不要ですよ〜

<<-EOS.reverse
Hello, World!
EOS

書籍「Ruby Quiz」にこれに関することが
少し載ってたような気がします。

takai :

おおおお

コメントする

著者について

高井直人
高井 直人
takai@recompile.net

ソフトウェアエンジニア。1977年横浜生まれ。大学在学中からネットワークや情報技術にたずさわる。Web制作会社などを経て、現在はシステムインテグレータに勤務。エンタープライズRubyをテーマに社内標準の策定などに従事している。

タグクラウド

ウェブページ

Powered by Movable Type 4.1-en-release-26-r1141-20080104