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

发布于 2024-12-14 04:09:58 字数 474 浏览 3 评论 0原文

我正在尝试编写一个 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”,第二次出现 NoMethodError 。

I am trying to write a ruby function that iterates through an array of strings that are method names and uses the Object#send method to save values in a new instance object (not even sure if thats legit) that is a transformation of an already existing one. That's the best I can explain it. Here's the idea:

@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

When I try to run something like this where I call the index "t" on two separate ocassions (in my send and in the multiplier) it NoMethodError's on the second ocassion.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

赠意 2024-12-21 04:09:58

您还需要 send 来获取值:

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

我总是使用并提倡在 String#+ 上进行字符串插值,并且您不需要 self . 获取lated_class

You need to send to get the value also:

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

I always use and advocate string interpolation over String#+, and you don't need the self. to get the related_class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文