在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"
实例变量仅在类的实例之间共享,每个实例都有自己的实例变量副本。