如何在Ruby中初始化类变量

  • 本文关键字:初始化 类变量 Ruby ruby
  • 更新时间 :
  • 英文 :


例如:

class MyClass
    @@var1 = '123456'
    def self.var1
        @@var1
    end
    class << self
        attr_accessor :var2
        def self.initialize
          self.var2 = 7890
        end
    end
end
 p MyClass.var1 # "123456"
 p MyClass.var2 # nil

有什么方法可以初始化var2?

如果Var2不是布尔人,则可以这样做。

class MyClass
  class << self
    attr_writer :var2
  end
  def self.var2
    @@var2 ||= 'my init value'
  end
end

首先,这是类变量和单胎类中的混乱。当您进行class << self时,并不意味着您现在可以将@@var1作为self.var1。我用这个示例

对此进行了说明
class MyClass
  @@var1 = '123456'
  class << self
    attr_accessor :var1
    def get_var1
      @@var1
    end
    def set_var1
      self.var1 = '654321'
    end
  end
end
MyClass.get_var1 #=> '123456'
MyClass.set_var1 #=> '654321'
MyClass.get_var1 #=> '123456'

您可以看到@@ var1在整个班级范围中可用,但与singleton变量有所不同。

类变量在类的所有对象之间共享,并且类方法也可以访问。因此,您可以在发现它可以接受的任何地方初始化它。最简单,最容易理解的是班级范围。

class MyClass
  @@var1 = '123456'
  ...
end

最新更新