注册
登录
Ruby
Ruby中的attr_accessor是什么?
返回
Ruby中的attr_accessor是什么?
作者:
狗头军师
发布时间:
2024-12-29 12:58:48 (9天前)
我有一个很难理解attr_accessor的红宝石。
谁可以给我解释一下这个?
收藏
举报
2 条回复
1#
回复此人
v-star*위위
|
2020-07-29 16-00
假设您有一堂课Person。 ``` class Person end person = Person.new person.name # => no method error 显然我们从来没有定义方法name。来做吧。 class Person def name @name # simply returning an instance variable @name end end person = Person.new person.name # => nil person.name = "Dennis" # => no method error ``` 啊哈,我们可以读取名称,但这并不意味着我们可以指定名称。那是两种不同的方法。前者称为读者,后者称为作家。我们还没有创建作家,所以让我们开始吧。 ``` class Person def name @name end def name=(str) @name = str end end person = Person.new person.name = 'Dennis' person.name # => "Dennis" ``` 太棒了 现在,我们可以@name使用reader和writer方法编写和读取实例变量。除非这样做如此频繁,为什么每次都要浪费时间编写这些方法?我们可以更轻松地做到这一点。 ``` class Person attr_reader :name attr_writer :name end ``` 即使这样也可以重复。当您同时希望读者和作家都使用访问器时! ``` class Person attr_accessor :name end person = Person.new person.name = "Dennis" person.name # => "Dennis" ``` 以相同的方式工作!猜猜是什么:@name就像我们手动设置时一样,我们的person对象中的实例变量将被设置,因此您可以在其他方法中使用它。 ``` class Person attr_accessor :name def greeting "Hello #{@name}" end end person = Person.new person.name = "Dennis" person.greeting # => "Hello Dennis" ``` 而已。为了了解attr_reader,attr_writer和attr_accessor方法实际上为您生成方法,阅读其他的答案,书,红宝石文档。
编辑
登录
后才能参与评论