在Ruby中,类变量是在类定义中声明的变量,它们属于类本身而不是类的实例。类变量的命名通常以@@
为前缀。这里是如何定义和使用类变量的示例:
class MyClass
# 定义类变量
@@class_variable = "I am a class variable"
def initialize
# 在实例方法中访问类变量
puts @@class_variable
end
end
# 创建类的实例
instance1 = MyClass.new
instance2 = MyClass.new
# 通过实例访问类变量
puts instance1.instance_variable_get(:@class_variable) # 输出 "I am a class variable"
puts instance2.instance_variable_get(:@class_variable) # 输出 "I am a class variable"
需要注意的是,类变量在所有类的实例之间共享。在上面的示例中,当我们访问instance1
和instance2
的类变量时,它们都返回相同的值。
如果你想要定义一个实例变量,可以使用@
前缀,如下所示:
class MyClass
def initialize
# 定义实例变量
@instance_variable = "I am an instance variable"
end
end
instance = MyClass.new
puts instance.instance_variable_get(:@instance_variable) # 输出 "I am an instance variable"
实例变量仅在类的实例之间共享,每个实例都有自己的实例变量副本。