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

Route 477

2004|09|10|11|12|
2005|01|02|04|05|06|07|10|12|
2006|01|02|03|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|
現在、メール欄が空でないコメントを弾いています


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!
| Bookmark:
本日のツッコミ(全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)

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

[]

2004|09|10|11|12|
2005|01|02|04|05|06|07|10|12|
2006|01|02|03|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|
トップ «前の日記(2009-11-30) 最新 次の日記(2009-12-05)» 編集