推荐答案
在 Ruby 中,attr_reader、attr_writer 和 attr_accessor 是用于简化类中实例变量访问和修改的便捷方法。
attr_reader:生成一个读取实例变量的方法。attr_writer:生成一个写入实例变量的方法。attr_accessor:同时生成读取和写入实例变量的方法。
本题详细解读
attr_reader
attr_reader 用于生成一个读取实例变量的方法。它接受一个或多个符号作为参数,每个符号对应一个实例变量名。例如:
// www.javascriptcn.com code example
class Person
attr_reader :name
def initialize(name)
@name = name
end
end
person = Person.new("Alice")
puts person.name # 输出: Alice在这个例子中,attr_reader :name 生成了一个名为 name 的方法,用于读取 @name 实例变量的值。
attr_writer
attr_writer 用于生成一个写入实例变量的方法。它同样接受一个或多个符号作为参数。例如:
// www.javascriptcn.com code example
class Person
attr_writer :name
def initialize(name)
@name = name
end
end
person = Person.new("Alice")
person.name = "Bob"
puts person.instance_variable_get(:@name) # 输出: Bob在这个例子中,attr_writer :name 生成了一个名为 name= 的方法,用于设置 @name 实例变量的值。
attr_accessor
attr_accessor 是 attr_reader 和 attr_writer 的结合体,它同时生成读取和写入实例变量的方法。例如:
// www.javascriptcn.com code example
class Person
attr_accessor :name
def initialize(name)
@name = name
end
end
person = Person.new("Alice")
puts person.name # 输出: Alice
person.name = "Bob"
puts person.name # 输出: Bob在这个例子中,attr_accessor :name 生成了 name 和 name= 两个方法,分别用于读取和设置 @name 实例变量的值。
总结
attr_reader:生成读取实例变量的方法。attr_writer:生成写入实例变量的方法。attr_accessor:同时生成读取和写入实例变量的方法。
这些方法极大地简化了 Ruby 类中实例变量的访问和修改操作,减少了重复代码的编写。