2009-12-02
■ [ruby] Ruby 1.9ではハッシュをJavaScriptっぽく書けます
(※12月の1日から25日まで、日替わりでRubyのTipsを紹介するイベント、Ruby Advent Calendar jp: 2009参加記事です。)
ご存じない(あるいは、忘れている…)方もいると思いますが、Ruby 1.9ではハッシュリテラルをJavaScriptのオブジェクトリテラルのように簡潔に書ける 文法が追加されています。
例えば、
{:a => 1, :b => 2}
の代わりに
{a: 1, b: 2}
と書くことができます。キーはSymbol限定とはいえ、これは短い!
Railsでよくあるオプションなんかも:
has_many :moves_from, :class_name => "Move", :foreign_key => :account_id_from
このように、短くなります。
has_many :moves_from, class_name: "Move", foreign_key: :account_id_from
Ruby 1.9の最新版はRuby 1.9.1-p243です。 MacPortsなら「port install ruby19」、Ubuntuなら「aptitude install ruby-1.9」でインストールすることができます。 Debianはruby1.9.1-fullとからしいです(コメント欄参照)
更に、より洗練されたRuby 1.9.2が来年のリリースを控えています。新しいメソッドやライブラリを提案したい人はお早めに!
おまけ
「Ruby Advent Calendar jp: 2009」というタイトル(ujihisa案)は、 この新しいハッシュ記法を元にしています :-)
以下のコードをadvent.rbとして保存し、Ruby 1.9.xで実行してみてください。
実行結果:
Merry Christmas 2009!
>Debian/Ubuntuなら「aptitude install ruby-1.9」でインストールすることができます。<br>パッケージ名は<br>ruby1.9<br>とか<br>ruby1.9.1-full<br>とかみたいです。
Debianユーザです。debianでは<br> aptitude install ruby1.9.1<br>です。ruby1.9.1-fullもあります。<br><br>(ABIバージョンをパッケージに埋め込むポリシーなんだと思います。<br>最初はruby1.9だったけど、1.9内でABI互換性が失われ得るという<br>アナウンスを受けて"ruby1.9.1"になったみたいです。つまり<br>1.9.2が出ても併存できます)
あぁ間違った、"Debian testing(squeeze)では" でした><
ruby1.9.1-full よりも<br><br>aptitude install '?source-package(^ruby1\.9\.1$)' -y<br>aptitude install irb1.9.1<br><br>の方がいいような。
追記しました。ありがとうございます>みなさま