gpt4 book ai didi

ruby - 类变量的 Attr_accessor

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

attr_accessor 不适用于以下代码。错误显示“父级未定义方法‘事物’(NoMethodError)”:

class Parent
@@things = []
attr_accessor :things
end
Parent.things << :car

p Parent.things

但是下面的代码是有效的

class Parent
@@things = []
def self.things
@@things
end
def things
@@things
end
end
Parent.things << :car

p Parent.things

最佳答案

attr_accessor 定义实例的访问器方法。如果你想要类级别自动生成的访问器,你可以在元类上使用它

class Parent
@things = []

class << self
attr_accessor :things
end
end

Parent.things #=> []
Parent.things << :car
Parent.things #=> [:car]

但请注意,这会创建一个类级实例变量而不是类变量。无论如何,这可能是您想要的,因为类变量的行为与处理继承时的预期不同。参见“Class and Instance Variables In Ruby”。

关于ruby - 类变量的 Attr_accessor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21122691/

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