2015-05-09 50 views
1

我有一个类的实例列表,我有一个散列,我想要应用到这些实例的变化。我不知道如何访问成员变量,我在变更列表中有哪些名称。如何使用访问器访问成员变量哪个名称正在Ruby中的变量中传递?

E.g.

class Foo 
    attr_accessor: foo 
    def initialize value 
    @foo = value 
    end 
end 

f = Foo.new("bar") 

我能明显访问@foof.foo,但说我有像changes = {"foo" => "baz"}形式更改列表。

现在我不知道wheter有一种方法可以做这样的事情:

changes.each do |k,v| 
    f.k = v 
end 

f.foo改为"baz"

回答

1

send方法可以帮助您动态地分配属性。

changes.each do |k,v| 
    f.send("#{k}=", v) 
end