在Ruby中,类变量是属于类的,而不是属于实例的。这意味着所有实例共享相同的类变量。为了避免误用类变量,可以采取以下措施:
class MyClass
def initialize
@instance_variable = "Instance variable"
end
end
class MyClass
@@class_variable = "Class variable"
def self.class_method
puts @@class_variable
end
end
attr_reader
和attr_writer
:如果需要为类变量提供访问器(getter)和修改器(setter),可以使用attr_reader
和attr_writer
方法。这样可以确保对类变量的访问和修改是受控的。class MyClass
@@class_variable = "Class variable"
attr_reader :class_variable_reader
attr_writer :class_variable_writer
def initialize
@class_variable = "Instance variable"
end
end
initialize
方法:在自定义的initialize
方法中,确保对类变量的访问和修改是受控的。class MyClass
@@class_variable = "Class variable"
def initialize
# Do not access or modify class variables directly here
end
end
module MyModule
MY_VARIABLE = "Shared variable"
end
class MyClass
def self.my_method
puts MyModule::MY_VARIABLE
end
end
遵循这些建议,可以避免在Ruby中误用类变量。