【问题标题】:Calling a setter method via a symbol通过符号调用 setter 方法
【发布时间】:2014-08-10 13:30:10
【问题描述】:

如果send 用于调用带有符号的方法(对于属性来说就是getter方法)

访问setter方法的反面是什么?

object.send(:attr)object.attr

作为

______ 发给object.attr = value

对不起,我不知道如何更好地解释这一点

【问题讨论】:

  • send 用于调用方法。方法的作用无关紧要,send 不在乎。你能澄清你的问题吗?是什么让你觉得send 只能用来调用某些方法而不能用来调用其他方法?
  • 问题不在于 send 是如何工作的,而是如何通过符号访问 setter,请参阅下面的答案
  • 好吧,你只需传递 setter 方法的名称。就像我说的,send 不关心方法做什么,无论是设置、获取还是在屏幕上打印粉红色的独角兽,它只是调用它。
  • 是的,但我并不特别关心send,其他替代品也不错,我不知道

标签: ruby metaprogramming setter getter


【解决方案1】:

我假设您正在尝试动态设置对象上各种属性的值。

尝试以下方法:

object.send("#{attr}=", value)

昨天有人问过a similar question - 它可能会有所帮助,因为它是一个更具体的例子。

【讨论】:

  • 如果值是假的,情况可能不是那么困难。你应该问一个关于你的具体问题的问题:)
【解决方案2】:

尝试使用:

object.send(column + '=', column_value)

【讨论】:

  • 我猜columnattr
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多