10.Ruby类的访问器方法(Accessor)的详解

由于initialize方法是private,所以Ruby类的实例变量不可以使用对象调用的方式直接被读取或修改,只能在实例方法中读取或修改,所以可以通过getter或setter实例方法分别读取和修改。

class MutablePoint
  def initialize(x,y)
    @x, @y = x, y
  end

  def x              #getter方法
    @x
  end

  def y              #getter方法
    @y
  end

  def x=(value)      #setter方法
    @x = value
  end

  def y=(value)      #setter方法
    @y = value
  end
end

给实例变量增加这种读写方法的需求俯拾皆是,但是以上的代码显得非常的繁琐,于是访问器方法应运而生。

class MutablePoint
  attr_reader :x, :y       #只读
  attr_writer :x, :y       #只写
  attr_accessor :x, :y     #读和写
  attr_:x                  #只读且只能定义一个属性             
  attr :y, true            #读和写且只能定义一个属性
end

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/ruby/rubyhigh/4630.html

发表评论

登录后才能评论