可以为使用 attr_accessor
为实例变量生成的类变量自动生成/启用 getter/setter:
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 博客文章二:关于ruby - Ruby 类变量的 Getter/Setter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27740934/