ハッシュによって定義されたアクセサ メソッドを使用してオンザフライでオブジェクトを作成する最も簡単な方法は何ですか? たとえば、ハッシュがある場合:
{foo: "Foo", bar: "Bar"}
foo
アクセサ メソッド、foo=
、bar
、およびbar=
初期値"Foo"
、 、およびをそれぞれ持つオブジェクトが必要です"Bar"
。私は次のことを考えることができます:
module ObjectWithAccessor
def self.new h; Struct.new(*h.keys).new(*h.values) end
end
o = ObjectWithAccessor.new(foo: "Foo", bar: "Bar")
o.foo # => "Foo"
しかし、同じ特定のキーのセットを持つそれらの複数のインスタンスを持つ必要はありませんが、おそらく異なるキーのセットを持つ毎回新しいインスタンスを作成したいので、Struct
オブジェクトごとに毎回新しいクラスを作成しますやり過ぎのように思えますが、それは避けたいと思います。これを行うより良い方法はありますか?