【问题标题】:Assigning many values from one object to another将多个值从一个对象分配给另一个对象
【发布时间】:2011-12-24 21:07:25
【问题描述】:

我正在尝试编写一个 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

当我尝试在两个不同的场合(在我的发送和乘法器中)运行类似这样的事情时,我在第二个场合调用索引“t”。

【问题讨论】:

  • 1) ARRAY_OF_METHODS 是什么? 2)related_classRelatedClass一样吗? 3)这个并行迭代如何?
  • @AndrewGrimm 1) “作为方法名称的字符串数组”。 2) 可能找到更好的解决方案的好问题,但与NoMethodError 无关。 3) 不是;我已经编辑了标题以匹配。 :)
  • 是的,我搞砸了。谢谢 Phrogz,你完全理解。

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


【解决方案1】:

您还需要send 来获取该值:

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

我一直使用和提倡字符串插值而不是String#+,你不需要self. 来获得related_class

【讨论】:

  • 啊,非常感谢 Phrogz 的解决方案和对我胡言乱语的解释!完美运行!
猜你喜欢
  • 2016-06-24
  • 1970-01-01
  • 2019-12-27
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 2020-11-10
相关资源
最近更新 更多