gpt4 book ai didi

ruby - 为什么我不能在初始化中使用 attr_accessor?

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

我正在尝试在 initialize 中执行一个 instance_eval,然后执行一个 attr_accessor,并且我一直得到这个:``initialize':未定义的方法“attr_accessor”。为什么这不起作用?

代码看起来像这样:

class MyClass
def initialize(*args)
instance_eval "attr_accessor :#{sym}"
end
end

最佳答案

不能在实例上调用 attr_accessor,因为 attr_accessor 没有定义为 MyClass 的实例方法。它仅适用于模块和类。我怀疑您想在实例的元类上调用 attr_accessor,如下所示:

class MyClass
def initialize(varname)
class <<self
self
end.class_eval do
attr_accessor varname
end
end
end

o1 = MyClass.new(:foo)
o2 = MyClass.new(:bar)
o1.foo = "foo" # works
o2.bar = "bar" # works
o2.foo = "baz" # does not work

关于ruby - 为什么我不能在初始化中使用 attr_accessor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1734984/

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