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/experience/rubye/4630.html

(0)
上一篇 2020年7月28日 21:13
下一篇 2020年7月29日 02:00

相关推荐

  • Ruby中require与require_relative方法的区别

    require方法用于引用已存在的库,只需要指定库名,程序就会在预先定义好的路径下查找并读取与Ruby一起安装的库。比如说Ruby标准类库。 require_relative方法在查找库时,则是根据执行中的程序目录(文件夹)来进行的,这有利于程序读取写在不同文件的代码。(relative英文的意思就是相对的意思) 注:…

    Ruby经验 2020年7月26日
    02.2K0
  • rbenv(ruby管理工具)的工作原理介绍

    1.工作原理 rbenv使用可以被注入到您的 PATH shim可执行文件来拦截Ruby命令,确定您的应用程序已指定了哪个Ruby版本,并将您的命令传递给正确的Ruby安装。 2.PATH环境变量 当您运行诸如ruby或rake命令时,您的操作系统将通过一个目录列表搜索以查找具有该名称的可执行文件。此目录列表位于名为P…

    Ruby经验 2020年8月10日
    01.4K0
  • MatZ谈Ruby中的块(Block)和闭包(Closure)

    本文为采访稿。 带块的循环 Bill Venners:Ruby支持块和闭包。什么是块和闭包,如何使用? 松本行弘(Yukihiro Matsumoto):块基本上是无名的函数(nameless functions)。您可能对lambda很熟悉,来自其他语言,例如Lisp或Python。基本上,您可以将无名函数传递给另一…

    Ruby经验 2020年7月30日
    01.4K0

发表回复

登录后才能评论