From: Gavin Sinclair Date: 2004-03-01T14:02:46+09:00 Subject: Re: turn hash into object variables? > I know beautiful Ruby has an easier way to do this: > > class SomeClass > def initialize(someHash) > @name = someHash['name'] > @address = someHash['address'] > @blah = someHash['blah'] > # etc for many key=>value pairs ... > end > end Hash#values_at(k1, k2, ...) > How can I make it do that for every key in the hash? Using OpenStruct gets you halfway there. require 'ostruct' h = { :name => "John", :age => 42 } o = OpenStruct.new(h) o.name # -> "John" o.age # -> 42 If you want to apply it to arbitrary classes, I suggest you write a module that implements the "from_hash" method. class SomeClass extend FromHash def initialize end end sc = SomeClass.from_hash(h) # 'h' as above sc.name # -> "John" Cheers, Gavin