【发布时间】:2013-02-09 16:56:22
【问题描述】:
使用散列定义的访问器方法动态创建对象的最简单方法是什么?例如,如果我有一个哈希:
{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"
但是,我不需要它们的多个实例具有相同的特定键集,而是希望每次都使用可能不同的键集创建它的新实例,因此使用 @987654329 创建一个新类@ 每次对每个对象似乎都过分了,我想避免这种情况。有没有更好的方法来做到这一点?
【问题讨论】: