将多个值从一个对象分配给另一个对象

时间:2011-11-08 22:45:09

标签: ruby-on-rails ruby iteration parallel-processing each

我正在尝试编写一个ruby函数,它遍历一个方法名称的字符串数组,并使用Object#send方法将值保存在新的实例对象中(甚至不确定这是否合法)是一个改造现有的。这是我能解释的最好的。这是个主意:

@example = RelatedClass.new

def example_method
  instance_dependant_float = related_class.myvalue / other_related_class.myvalue

  ARRAY_OF_METHODS.each do |t|
    @example.send(t+'=', self.related_class.t * instance_dependant_float)
  end
end

当我尝试运行这样的东西时,我在两个单独的ocassions上调用索引“t”(在我的发送和乘法器中),NoMethodError在第二个ocassion上。

1 个答案:

答案 0 :(得分:3)

您还需要send来获取值:

ARRAY_OF_METHODS.each do |name|
   @example.send( :"#{name}=", related_class.send(name) * some_float )
end

我总是在String#+上使用和提倡字符串插值,而您不需要self.来获取related_class