落書きノート

ふと自分が気になった事を書いてます

Ruby 練習問題 ハッシュクラスその2

ハッシュは、「順番を保存しない」という特徴がありましたが、ハッシュを使って、順番を保存するハッシュ、OrderedHashクラスを定義してください。このOrderedHashクラスは…という問題です。ちょっとだけ答えを見ましたが、一応出来ました。

class OrderedHash
  def initialize
    @keys = Array.new()
    @content = Hash.new()
  end

  def [](key)
    @content[key]
  end

  def []=(key,value)
    @content[key] = value
    if !@keys.include?(key)
      @keys << key
    end
  end

  def keys
    @keys
  end

  def values
    @content.values
  end
end

oh = OrderedHash.new
oh["one"] = 1
oh["two"] = 2
oh["three"] = 3
oh["two"] = 4
p oh.keys
p oh.values