`
candyania
  • 浏览: 33746 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

attr_reader,attr_writer,attr_accessor用法

阅读更多

Ruby 语言与Python和Perl的一个很大区别,在于Ruby中,所有的实例变量都是在类中完全私有的,只能通过accessor 方法来进行变量访问,引用一段代码来说明具体的使用方法:

class Rectangle
  attr_accessor :width
  attr_accessor :height
  attr_accessor :width2
  attr_accessor :height2
  
  def initialize(wdth, hgt)
    @width = wdth
    @height = hgt
  end
  
  def area()
    return @width * @height
  end
  
  def area2()
    return @width2 * @height2
  end
  
  
end

r = Rectangle.new(2,3)
r.width = 5 # give samename's variable value
r.height = 5 
puts r.area() #outputs is 25  

r.width2 = 6 # not samename's variable  create
r.height2 = 6 
puts r.area2() # outputs is 36

attr_reader: 实例变量只读

attr_writer: 实例变量可写

attr_accessor: 变量可读可写

 

分享到:
评论

相关推荐

    程序员需要经常刷题吗-scoped_attr_accessor:将私有和受保护的attr_accessor方法添加到您的类-或所有ruby

    需要程序员经常刷题吗范围属性访问器 将范围访问器添加到 ruby​​。 您可以在私有或受保护范围内创建作者、读者和访问...protected_attr_reader :some_weird_counter end class Monkey < Primate # Monkey can def

    weak_attr_accessor:RubyMotion 的weak_attr_accessor

    #weak_attr_accessor 用于 用法 做这个: class MainView < UIView weak_attr_accessor :view_controller end 而不是这个: class MainView < UIView def view_controller @view_controller end def...

    attr_encrypted:生成用于加密和解密属性的attr_accessor

    安装将attr_encrypted添加到您的gemfile中: gem "attr_encrypted" , "~> 3.1.0" 然后安装gem: bundle install用法如果您正在使用ActiveRecord , DataMapper或Sequel类的ORM,则使用attr_encrypted很容易: class ...

    attr_extras:使用attr_initialize之类的方法从Ruby中获取一些样板

    提供像attr_private和attr_value这样的底层方法,可以很好地补充Ruby的内置attr_accessor , attr_reader和attr_writer 。 像pattr_initialize (或attr_private_initialize )和method_object这样的更高级别的...

    attr_typecastable:具有类型转换功能的 attr_accessor

    attr_typecastable attr_accessor 具有类型转换功能。要求Ruby 2.0 或更高版本安装将此行添加到应用程序的 Gemfile 中: gem 'attr_typecastable' 然后执行: $ bundle或者自己安装: $ gem install attr_...

    attr_setting:增强的 attr_accessor

    attr_accessor :send_email def initialize @send_email = true end def send_email? send_email end end 该类定义了一个Configuration对象,其中包含应用程序是否应该发送电子邮件的设置。 send_email设置...

    sith:带有Ruby样板符号的Ruby宏预处理器

    例子: 宏定义文件: macro_mapper attr_reader ( label ) def ~ { label } @~ { label } endendmacro_mapper attr_writer ( label ) def ~ { label } = ( value ) @~ { label } = value endendmacro attr_accessor ...

    Ruby-FastAttributes将属性与类型添加到类中

    在Ruby中,通常我们使用`attr_accessor`、`attr_reader`或`attr_writer`来定义类的属性。例如: ```ruby class Example attr_accessor :name end example = Example.new example.name = "John Doe" puts example....

    ruby-oo-fundamentals-attribute-accessors-lab-sea01-seng-ft-07132

    在Ruby中,属性访问器是通过`attr_accessor`、`attr_reader`和`attr_writer`这三个内置宏来创建的。`attr_accessor`用于同时创建读取(getter)和写入(setter)方法,`attr_reader`只创建getter,`attr_writer`则只...

    oop-basics-accessor-methods

    在 Ruby 中,我们可以使用 `attr_accessor`、`attr_reader` 和 `attr_writer` 这三个内置宏来轻松定义这些方法。它们极大地提高了代码的可读性和简洁性。 1. **attr_accessor**:这个宏同时创建了 getter 和 setter...

    ruby-oo-self-person-lab

    获得辨别何时实现attr_accessor , attr_reader和attr_writer 。 能够识别何时定义自己的attr_reader (getter)和attr_writer (setter)方法。 介绍 为了练习面向对象的编程(OOP),您将创建一个Person类。 ...

    attr_validator:对象验证库

    gem 的主要思想是将所有对象验证逻辑与对象本身分离用法假设您有以下类,并且您想验证此类的对象 class Contact attr_accessor :first_name , :last_name , :position , :age , :type , :email , :color , :status ...

    MetaProgramming-Play:重写 Ruby 注入方法以了解元编程

    使用define_method创建Ruby 内置attr_accessor方法的布尔版本。代码片段: 使用define_method attr_accessor方法 def self . attr_accessor? ( attr ) read_method = " #{ attr } ?" write_method = " #{ attr } =...

    ruby-oo-fundamentals-attribute-accessors-lab-wdc01-seng-ft-06012

    4. **只读属性(Read-only Attributes)**: 如果只想提供getter方法,可以使用`attr_reader`。这禁止了外部代码直接修改属性的值,确保数据的完整性。 5. **只写属性(Write-only Attributes)**: 同样,如果只需要...

    Ruby 面向对象知识总结

    - **`attr_reader`**:仅提供访问器的方法。 ```ruby class Box attr_reader :width, :height def initialize(width, height) @width = width @height = height end end ``` - **`attr_writer`**:仅...

    instance:光滑的对象实例 API

    实例它是什么? Instance 是一种方便且安全的API,用于访问和操作对象的状态。它是如何工作的... class Song attr_accessor :title attr_accessor :artist attr_accessor :year def initialize ( title , artist

    Ruby 代码规范

    - 使用 `attr_accessor`, `attr_reader`, `attr_writer` 来声明属性,而不是手动创建getter和setter。 - 避免在类的初始化方法之外定义实例变量,使用 `attr_accessor` 或 `initialize` 方法初始化。 6. **错误...

    attr-filters:筛选对象属性的宝石

    AttrFilters 轻量级的gem,用于以零依赖关系过滤PORO(普通的旧式Ruby对象)属性。... attr_accessor :email , :first_name , :last_name , :zip , :birth_date , :due_date filters :email , trim : true , down

    oo-my-pets-online-web-sp-000

    请记住,某些属性应该是可读可写(即attr_accessor S),而另一些可能需要只是制定者( attr_writer )或只是吸气剂( attr_reader )。测试套件将明确这一点,因此请注意测试输出。第二部分:对象关系主人应该能够...

    Ruby元编程第二版中文

    `attr_accessor`、`attr_reader`和`attr_writer`是用于快速创建属性的元编程工具。符号(Symbol)在Ruby中是特殊的,它们在内存中只存在一份,常用于元编程中的键值。 5. **Proc对象与lambda**:Ruby的`Proc`和`...

Global site tag (gtag.js) - Google Analytics