gpt4 book ai didi

ruby - 如何动态添加 attr_reader

转载 作者:数据小太阳 更新时间:2023-10-29 06:34:43 25 4
gpt4 key购买 nike

我希望下面的代码能按预期工作,但它给了我一个 NoMethodError(为 #

class MyClass
end

my_object = MyClass.new

my_object.instance_variable_set(:@foo, "bar")
MyClass.send("attr_reader", :foo)

puts my_object.foo

问题是我在一个更大的应用程序中使用完全相同的代码并且它完全按照我的预期工作,但是当我将它简化为这个最基本的示例时它失败了。

(我知道还有很多其他方法可以完成我在 Ruby 中所做的事情)

最佳答案

使用Module#class_eval :

通过这样做,该 block 将您置于 MyClass 的上下文中,从而允许您调用 attr_reader

ruby-1.9.2-p136 :028 > my_object.instance_variable_set(:@foo, "bar")
=> "bar"
ruby-1.9.2-p136 :029 > MyClass.class_eval{attr_reader :foo}
=> nil
ruby-1.9.2-p136 :030 > my_object.foo
=> "bar"

关于ruby - 如何动态添加 attr_reader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5507230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com