面试题答案
一键面试在Ruby中,可以通过attr_reader
、attr_writer
、attr_accessor
这几个方法来定义对象属性的不同访问权限。
1. attr_reader
作用:用于创建一个只读属性,外界只能读取该属性的值,不能对其进行赋值。 示例:
class Person
attr_reader :name
def initialize(name)
@name = name
end
end
person = Person.new('Alice')
puts person.name # 输出: Alice
# person.name = 'Bob' # 这行代码会报错,因为name是只读属性
2. attr_writer
作用:用于创建一个只写属性,外界只能对该属性进行赋值,不能直接读取其值。 示例:
class Person
attr_writer :name
def show_name
puts @name
end
end
person = Person.new
person.name = 'Alice'
person.show_name # 输出: Alice
# puts person.name # 这行代码会报错,因为name是只写属性
3. attr_accessor
作用:用于创建一个读写属性,外界既可以读取该属性的值,也可以对其进行赋值。它相当于同时使用了attr_reader
和attr_writer
。
示例:
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_reader
创建只读属性,只提供读取方法。attr_writer
创建只写属性,只提供赋值方法。attr_accessor
创建读写属性,同时提供读取和赋值方法。通过合理使用这几个方法,可以有效控制对象属性对外界的访问权限。