簡體   English   中英

如何在Ruby中初始化類變量?

[英]How do I initialize a class variable in 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在整個類范圍內可用,但與單例變量不同。

類變量在類的所有對象之間共享,並且類方法也可以訪問它。 因此,您可以在任何可以接受的地方對其進行初始化。 最簡單易懂的是在類范圍內。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM