From: Kenta Murata Date: 2011-01-08T15:34:17+09:00 Subject: [ruby-dev:42984] Re: 特異メソッドの定義の簡略化 むらたです。 2011年1月8日14:44 EGUCHI Osamu : > s = {size: 5} > s.size # => 1 > s->size # => 5 > > のように hash->key を hash[”key”] の省略記法にできないでしょうか? いくつか疑問点が生じます。 (1) -> は演算子なんでしょうか? それとも特殊な構文なのでしょうか? (2) 最近はハッシュのキーを文字列ではなく Symbol にする人が多いように思えますが、 この省略記法では Symbol のキーには対応できないんですよね。 hash["key"] と hash[:key] が同時に存在している場合とかどうなるんでしょう? (3) hash["key"] という式は、hash.send(:[], "key") とほとんど同じものです。 ですから、Hash ではなく Array に対して使うと ary->2 のような書き方になりそうです。 そういう用途は想定されていますか? > 文法的には拡張の余地がある(既存の構文との衝突はない)と思います。 -> という記号は、既に Proc を生成するための構文で使われていますね。 -- Kenta Murata OpenPGP FP = 1D69 ADDE 081C 9CC2 2E54 98C1 CEFE 8AFB 6081 B062 本を書きました!! 『Ruby 逆引きレシピ』 http://www.amazon.co.jp/dp/4798119881/mrkn-22 E-mail: mrkn@mrkn.jp twitter: http://twitter.com/mrkn/ blog: http://d.hatena.ne.jp/mrkn/