[ruby-list:41662] Re: Hashを継承したクラスの利用方法について

From: saitani <cxj15527@...>
Date: 2005-12-04 22:46:59 UTC
List: ruby-list #41662
才谷いいます。お世話になります。

> どのような状況で必要になった事なのか分からないので、もしかしたらズれた解
> 答かもしれませんが、Hashを直接拡張してしまうのはいかがでしょうか?
> このようにはなりませんが、以下のように

黒田さんがおっしゃるような解も考えてみたのですが、
わたしがHashの拡張が欲しくなった経緯は以下の通りです。

eachメソッド等で呼んだとき、順序が保障されたものが欲しい。
そこで、下記のように派生クラスにkeyだけを配列に覚えさせといて、
それを利用すれば順序が保障される。

class Hash2 < Hash
  def initialize()
    @index_value=[] unless @index_value
  end
  def []=(aKey, aValue)
    @index_value.push(aKey)
    super(aKey, aValue)
  end
  def each_index
    @index_value.each_with_index do |itrKey, itrIndex|
      yield(itrKey, self[itrKey], itrIndex)
    end
  end
end

ついでに、今後、Hashが必要になったときは、
こちら(Hash2)を使うようにしたい。。。という理由でした。

で、利用するとき、

wHoge={}

というリテラルでHash2がインスタンス化できないものか?
単なるわたしの怠慢なような気もします。

以上、よろしくお願いいたします。
--
saitani cxj15527@activemail.jp

In This Thread