From: hattorihiroaki1@... Date: 2011-01-08T19:00:52+09:00 Subject: [ruby-dev:42991] Re: 特異メソッドの定義の簡略化 服部裕暁です。 >あさりです。 > >個人的な意見としてはHashは今の時点で充分に有用で簡単なので、 >UsefulHashではどこがどうHashよりも有用なのか、また >EazyHashではHashよりもどう簡単なのか解らない。 参考になります。いろいろ意見があることがわかりました。 >あと、Eazyって、Easyを気取って綴っているのか、間違って綴ってしまったのか判らないので止めた方がいいと思います。 これは単なるミスです。指摘ありがとうございます。 ### >まつもと ゆきひろです > >まあ、主観ですからねえ。ただ、OpenStructは「拡張に対して開か >れている」つまり、後から(代入によって)メンバを追加することが >できるStructという意味ですから、その意味では確かに「開いてい >る」と思いますよ。 わかりました。コンピュータでいうところのOpenとは、暗黙に「拡張に対して」と なっている印象をもちました。 >soraくんも指摘していましたが、標準ライブラリの名前を変えると >いうのは大きなことなので、可能性は高くないと思いますよ。 そうですね。ただ、SimpleStructという名前も考えたのでついでに書いておきます。 soraさんもありがとうございます。 ### >まずはEazyHashライブラリをgithubあたりで配布することから始めてはどうでしょうか。 > >Yuki Sonoda (Yugui) これは耳が痛い意見です。そこまでできないのですみません。(勝手ですが) ### >s = {size: 5} >s.size # => 1 >s->size # => 5 > > えぐち これは良いアイデアに思えます。できたらいいですよね。 ### >むらたです。 > >(2) 最近はハッシュのキーを文字列ではなく Symbol にする人が多いように思えますが、 >この省略記法では Symbol のキーには対応できないんですよね。 >hash["key"] と hash[:key] が同時に存在している場合とかどうなるんでしょう? {foo: "val"} という記法ができたのですから、Symbolを主体にするほうが、私はよいと思います。 > >(3) hash["key"] という式は、hash.send(:[], "key") とほとんど同じものです。 >ですから、Hash ではなく Array に対して使うと ary->2 のような書き方になりそうです。 >そういう用途は想定されていますか? 私は、配列に対してary->2のように書く用途が思いつかないので、配列には気を配らなくても いいのではないかと思います。 ### >sora_hです。 >それをrubygems.orgにでもpushしておけば使いやすいですしそれはいい手段だと思われます。 >自分で試してみるといいかもしれませんね。 gemですか、今度ためしてみたいと思います。 ### > まつもと ゆきひろです > > しかし、残念ながら a->sizeは「a(->size{...})」のような構文と > 途中まで同じなのでコンパイラが困っちゃうと思います。これはだ > いたい a(lambda{|size|...})と同じような意味です。 > 今さらだと思いますが、 ->a {} よりも括弧を必ず付ける ->(a) {} の方がよいと思います。 #括弧を付けない呼び出しにこだわりすぎでは??(でしゃばりすぎですか(汗))