【问题标题】:Ruby equivalent of Python setattr()Ruby 等价于 Python setattr()
【发布时间】:2010-01-25 23:04:06
【问题描述】:

好吧,把我加入那些爱上 Ruby 却对 PyAddiction 挥之不去的 Python 程序员的名单。就像关于 Python's getattr 的帖子一样,我正在寻找 Ruby 等价物:

setattr(obj, 'attribute', value)

其中 obj 是一个对象实例,attribute 是作为字符串的对象属性之一的名称,value 是该对象的值。等效代码为:

obj.attribute = value

我假设它是可能的(因为 Python 中任何可能的东西现在在 Ruby 中似乎更容易),但找不到它的文档。

【问题讨论】:

    标签: ruby


    【解决方案1】:

    obj.instance_variable_set("@instance_variable", value)obj.send("instance_variable=", value)

    前者直接设置实例变量。后者调用 setter 方法,当然只有在存在 setter 方法时才有效,但另一方面,如果您有一个实际上不只设置实例变量(或不设置实例)的 setter 方法,它也适用变量)。

    【讨论】:

    • 注意:instance_variable_setsend的第一个参数也可以是符号
    猜你喜欢
    • 2019-08-15
    • 2012-11-26
    • 2011-08-18
    • 2019-03-14
    • 2010-09-23
    • 2012-02-21
    • 2011-03-18
    • 2014-05-15
    • 1970-01-01
    相关资源
    最近更新 更多