« Return to Thread: [ruby-list:43857] Hashへの生成順は保障されないのか?

[ruby-list:43920] Re: Hashへの生成順は保障されないのか?

by Nobuyoshi Nakada-2 :: Rate this Message:

Reply to Author | View in Thread

なかだです。

At Wed, 22 Aug 2007 08:32:56 +0900,
GOTO Kentaro wrote in [ruby-list:43919]:

> > > * 格納された順序を覚えられる
> > > * keys.sort_by(&ord).each do |k| ... end の ord 相当を指定できる
> > > という二通りを必要とすることが多いんですが、両方サポートしているんでしょうか。
> >
> > 前者のみです。
>
> なるほど。
> 大クラス主義的にはずいぶんと貧弱な気がしました。
> でもまあ、例外を起こさないように任意の順序を指定するのは
> 手軽ではなかったりもしますね。

というか、今回の変更はst.cに対するものなので、直接rubyレベルの機
能を追加することはかなり面倒になります。

それに、任意の順序を指定したければ追加は簡単なので。

  class Hash
    def order(&b)
      sort(&b).inject(self.class.new) {|h, (k, v)| h[k] = v; h}
    end
    def order_by(&b)
      sort_by(&b).inject(self.class.new) {|h, (k, v)| h[k] = v; h}
    end
  end

--
--- 僕のの前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

 « Return to Thread: [ruby-list:43857] Hashへの生成順は保障されないのか?