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

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

by 山崎雄介 :: Rate this Message:

Reply to Author | View in Thread

山崎(ゆ)です。

PseudoHashなるものがあります。
http://raa.ruby-lang.org/project/pseudohash/

require 'pseudohash'
pair = PseudoHash.new
pair["apple",true]="apple"
pair["and",true]="and"
pair["bee",true]="bee"
pair["cat",true]="cat"

pair.order.each do |key|
  print key, "=>", pair[key], "\n"
end

配布されているPseudoHashでは、順序付きにするのに、
pair["apple",true]="apple"
としなければいけないのですが、順序付け以外の目的でPseudoHashが必要な場合
はないと思ったので、[]メソッドを書き換えて使っています。

require 'pseudohash'

class PseudoHash
  def []=(k, *rest)
    val, set = rest.reverse
#   order.push k if set and not order.include? k
    order.push k if         not order.include? k
    aset(k,val)
  end
end

pair = PseudoHash.new
pair["apple"]="apple"
pair["and"]="and"
pair["bee"]="bee"
pair["cat"]="cat"

pair.order.each do |key|
  print key, "=>", pair[key], "\n"
end
_______________________
Yusuke Yamasaki <y-yamasaki@...>


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