局部变量
- 定义:以小写字母或下划线开头,如
local_variable = "value"
。
- 作用域规则:在定义它的方法、循环或块内有效。一旦这些代码块结束,局部变量就超出作用域并被销毁。
- 示例:
def example_method
local_variable = "I'm a local variable"
puts local_variable
end
example_method
# 这里无法访问 local_variable,会报错
实例变量
- 定义:以
@
符号开头,如 @instance_variable = "value"
。
- 作用域规则:在定义它的对象实例内有效。不同的对象实例有各自独立的实例变量副本。
- 示例:
class ExampleClass
def set_instance_variable
@instance_variable = "I'm an instance variable"
end
def get_instance_variable
@instance_variable
end
end
obj = ExampleClass.new
obj.set_instance_variable
puts obj.get_instance_variable
类变量
- 定义:以
@@
符号开头,如 @@class_variable = "value"
。
- 作用域规则:在整个类及其所有子类中共享。所有类实例都可以访问和修改类变量。
- 示例:
class ExampleClass
@@class_variable = "I'm a class variable"
def self.get_class_variable
@@class_variable
end
def set_class_variable(new_value)
@@class_variable = new_value
end
def get_class_variable
@@class_variable
end
end
obj1 = ExampleClass.new
obj2 = ExampleClass.new
puts ExampleClass.get_class_variable
obj1.set_class_variable("New class variable value")
puts obj2.get_class_variable
常量
- 定义:以大写字母开头,如
CONSTANT = "value"
。
- 作用域规则:在定义它的模块或类内有效。虽然在Ruby中常量可以重新赋值,但这通常被视为不好的实践。
- 示例:
class ExampleClass
CONSTANT = "I'm a constant"
def get_constant
CONSTANT
end
end
obj = ExampleClass.new
puts obj.get_constant