您好我的问题很简单我有简化的代码
foo = OpenStruct.new
bar = OpenStruct.new
mappings.each do |k,v|
eval "foo.#{k} = bar.#{v}"
end
我正在尝试修复此eval
使用而不使用它:)找出正确的部分,但我不知道如何分配给左边的一部分。要访问getter,你可以写。
bar.send(v.to_sym)
# not to sure how to access setter for foo
我正在使用 Ruby 1.8.7 ,谢谢
答案 0 :(得分:4)
不确定1.8.7,但在较新的Rubies中,这有效:
foo.send("#{k}=".to_sym, bar.send(v.to_sym))
此外,在较新版本中,send
也接受字符串,因此您可以省略.to_sym
。