gpt4 book ai didi

ruby - Ruby 中类变量的 Getter/Setter

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

是否可以为类变量自动生成/启用 getter/setter,就像使用 attr_accessor 为实例变量生成的那样:

class School
@@syllabus = :cbse

def self.syllabus
@@syllabus
end

def self.syllabus=(_)
@@syllabus = _
end
end

School.syllabus = :icse
School.syllabus # => :icse

最佳答案

您需要做的就是在类的范围内声明attr_accessor:

class School
class << self
attr_accessor :syllabus
end
end

School.syllabus = :icse
School.syllabus # => :icse

请注意,底层成员不会@@syllabus(没有针对此类变量的内置解决方案)而是@syllabus 在类范围内,无论如何这是推荐的方法,参见 this关于两者区别的博文:

The issue with class variables is inheritance. Let’s say I want to subclass Polygon with Triangle like so:

class Triangle < Polygon
@@sides = 3
end

puts Triangle.sides # => 3
puts Polygon.sides # => 3

Wha? But Polygon’s sides was set to 10? When you set a class variable, you set it for the superclass and all of the subclasses.

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

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