トップ «前の日記(2009-11-30) 最新 次の日記(2009-12-05)» 編集

Route 477



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!
本日のツッコミ(全5件) [ツッコミを入れる]
うぶ (2009-12-03 11:25)

>Debian/Ubuntuなら「aptitude install ruby-1.9」でインストールすることができます。<br>パッケージ名は<br>ruby1.9<br>とか<br>ruby1.9.1-full<br>とかみたいです。

斎藤ただし (2009-12-03 20:24)

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が出ても併存できます)

斎藤ただし (2009-12-03 20:25)

あぁ間違った、"Debian testing(squeeze)では" でした><

okkez (2009-12-04 00:44)

ruby1.9.1-full よりも<br><br>aptitude install '?source-package(^ruby1\.9\.1$)' -y<br>aptitude install irb1.9.1<br><br>の方がいいような。

yhara (2009-12-06 00:30)

追記しました。ありがとうございます>みなさま