在Ruby中,类变量(Class Variables)是属于类的变量,而不是属于类的实例(对象)。它们以两个下划线(__)开头和结尾,例如:@@variable_name。类变量在整个类及其所有实例之间共享,这意味着对类变量的任何更改将影响所有实例。
类变量通常用于存储所有实例共享的数据,例如类的版本号、描述或其他全局设置。与实例变量不同,实例变量(以@开头)仅在特定实例中存储数据,不会影响其他实例。
以下是一个关于Ruby类变量的示例:
class MyClass
@@variable_name = "Shared Data"
def self.display_variable
puts @@variable_name
end
def initialize
@instance_variable = "Instance Data"
end
end
# 访问类变量
MyClass.display_variable # 输出 "Shared Data"
# 创建类的实例
instance1 = MyClass.new
instance2 = MyClass.new
# 通过实例访问类变量
instance1.display_variable # 输出 "Shared Data"
instance2.display_variable # 输出 "Shared Data"
# 更改类变量
MyClass.@@variable_name = "Updated Shared Data"
# 再次访问类变量
instance1.display_variable # 输出 "Updated Shared Data"
instance2.display_variable # 输出 "Updated Shared Data"
在这个示例中,我们定义了一个名为MyClass的类,其中包含一个类变量@@variable_name和一个实例变量@instance_variable。我们可以通过类名直接访问类变量,也可以通过类的实例访问类变量。当我们更改类变量时,所有实例中的类变量值都会更新。