From: rubikitch@... Date: 2008-01-26T03:41:32+09:00 Subject: [ruby-dev:33387] HashからStructを作る るびきちです。 HashからStructを作れたらいいなと思いました。 def Struct(hash) Struct.new(*hash.keys.map(&:to_sym)).new(*hash.values) end s = Struct("a"=>1, :b=>2) # => # s.a # => 1 s.b # => 2 s.a+=23 s # => # 理由は、 * OpenStructはHashから作成できる。 * OpenStructは method_missing を使っているため、typoに弱い。 * accessor形式でキーにアクセスしたがる人をよく見掛ける。 * Structなのでtypoが発見しやすい。 * Struct自体HashとArrayの双方の性質を持ち合わせている。 「Kernel.#Struct」、「Struct.[]」、「Struct.new」の引数にHashを指定して 作れるといいと思います。 -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/