可以为使用 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/

10-10 14:56