ruby中attr_accessor方法的理解

attr_accessor相当于attr_reader和attr_writer的合集,实际上是在定义类成员变量的时候就给他定义了一个get和set方法。

在ruby中,类成员变量都是私有的,不能直接通过(类名.成员变量名)这样来对成员变量值进行操作。

在这个实例中可以看到,使用attr_accessor定义的成员可以直接对其进行set和get的操作,如果没有attr_accessor,则不行。

 

# 例子1
# 使用attr_accessor 运行正常

 1 class AttrAccessorTest1
 2   attr_accessor :name
 3   def initialize()
 4     @name = "test attr"
 5   end
 6 end
 7 t = AttrAccessorTest1.new
 8 puts t.name
 9 t.name = "test attr modify"
10 puts t.name
 
# 例子2
# 未使用attr_accessor 运行报错 Error: #<NoMethodError: undefined method 'name'>
 1 class AttrAccessorTest2
 2   def initialize()
 3     @name = "test attr"
 4   end
 5 end
 6 t = AttrAccessorTest2.new
 7 # ↓↓↓↓↓↓ 未使用attr_accessor的name是不可通过 (类名.成员变量名),这样来对成员变量值进行操作
 8 puts t.name
 9 t.name = "test attr modify"
10 puts t.name

 

 

posted @ 2020-11-27 16:05  瞎几把乱记  阅读(580)  评论(0编辑  收藏  举报