如何使用访问者访问成员变量哪个名称在Ruby中的变量中传递?

时间:2015-05-09 12:42:30

标签: ruby

我有一个类的实例列表,我有一个哈希,其中包含我想要应用于这些实例的更改。我无法想象如何在变更列表中访问成员变量的名称。

E.g。

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

f = Foo.new("bar")

我可以使用@foo显然访问f.foo,但我说我有changes = {"foo" => "baz"}等格式的更改列表。

现在我想知道有办法做这样的事情:

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

f.foo更改为"baz"

1 个答案:

答案 0 :(得分:1)

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

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