るびきちです。

HashからStructを作れたらいいなと思いました。

def Struct(hash)
  Struct.new(*hash.keys.map(&:to_sym)).new(*hash.values)
end
s = Struct("a"=>1, :b=>2)       # => #<struct a=1, b=2>
s.a                             # => 1
s.b                             # => 2
s.a+=23
s                               # => #<struct a=24, b=2>

理由は、
* 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/