在Ruby中,類變量是一種特殊的變量,它屬于類本身而不是類的實例。這意味著,當你在一個類中定義一個變量時,它將被類的所有實例共享。類變量通常使用大寫字母表示,例如@@variable_name
。
類變量的機制如下:
類變量在所有實例之間共享。這意味著,如果你更改了一個類變量的值,那么所有實例中的該變量都將受到影響。
類變量在類定義時初始化。這意味著,當創(chuàng)建一個新的類實例時,類變量已經(jīng)存在。
類變量可以通過類名直接訪問,也可以通過類的實例訪問。但是,通過實例訪問類變量時,需要使用self
關(guān)鍵字。
下面是一個簡單的示例:
class MyClass
@@count = 0
def initialize
@instance_var = "Instance variable"
increment_count
end
def increment_count
@@count += 1
end
def self.get_count
@@count
end
end
# 創(chuàng)建實例
instance1 = MyClass.new
instance2 = MyClass.new
# 通過實例訪問類變量
puts instance1.class.get_count # 輸出 1
puts instance2.class.get_count # 輸出 1
# 通過實例修改類變量
instance1.increment_count
puts instance1.class.get_count # 輸出 2
puts instance2.class.get_count # 輸出 2
在這個示例中,我們定義了一個名為MyClass
的類,它具有一個類變量@@count
和一個實例變量@instance_var
。我們在initialize
方法中調(diào)用increment_count
方法,該方法會遞增@@count
的值。我們還定義了一個類方法get_count
,用于獲取@@count
的值。
當我們創(chuàng)建兩個MyClass
的實例時,它們共享相同的@@count
變量。當我們通過實例修改@@count
的值時,另一個實例中的@@count
值也會受到影響。