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

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

by Shima Shizuo :: Rate this Message:

Reply to Author | View in Thread

こんにちは、嶋です。

>Hashクラスを継承したクラスを定義してはいかがでしょうか.
>例えば,以下のようにOrderedHashクラスを定義します.
>
>class OrderedHash < Hash
>  def initialize
>    @index = []
>  end
>
>  def []=(key, val)
>    @index.push(key)
>    super(key, val)
>  end
>
>  def each
>    @index.each do |key|
>      yield(key, self[key])
>    end
>    self
>  end
>end

同じkeyを複数回指定されると、each で同じkey,valが複数回出てきて
しまいそうですね。

  def []=(key, val)
+    @index.delete(key)
    @index.push(key)
    super(key, val)
  end

とするのがいいかなぁ・・


----
Shima Shizuo  r6@...


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