在Ruby中,类变量是一种特殊的变量,它属于类本身而不是类的实例。这意味着,当你在一个类中定义一个变量时,它将被类的所有实例共享。类变量通常使用大写字母表示,例如@@variable_name
。
类变量的机制如下:
类变量在所有实例之间共享。这意味着,如果你更改了一个类变量的值,那么所有实例中的该变量都将受到影响。
类变量在类定义时初始化。这意味着,当创建一个新的类实例时,类变量已经存在。
类变量可以通过类名直接访问,也可以通过类的实例访问。但是,通过实例访问类变量时,需要使用self
关键字。
下面是一个简单的示例:
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
# 创建实例
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
方法中调用increment_count
方法,该方法会递增@@count
的值。我们还定义了一个类方法get_count
,用于获取@@count
的值。
当我们创建两个MyClass
的实例时,它们共享相同的@@count
变量。当我们通过实例修改@@count
的值时,另一个实例中的@@count
值也会受到影响。