`
yanzilee9292
  • 浏览: 541364 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

详解ruby的attr_accessor和cattr_accessor

    博客分类:
  • ruby
阅读更多

1. attr_accessor的用法相当简单, 就相当于getter和setter,看一个类就知道怎样用了:

 

 

class Test
  attr_accessor :name
  
  def initialize()
	@name = "yanzilee9292"
  end
end

#test
puts Test.new.name

 

 

保存这个类为test.rb文件, 通过命令行运行 ruby test.rb, 会得到以下结果:

   yanzilee9292

 

2. 如果我们把attr_accessor去掉, 该怎么输出name的值呢

 

 

class Test
  def initialize()
	@name ="yanzilee9292"
  end
  #test
  puts Test.new.instance_eval {@name}
end
 

 

可以看到, 用attr_accessor会把事情变得更加简单

 

3. cattr_accessor和attr_accessor的区别

 

cattr_accessor就相当于java的类静态变量, 对所有的类实例共享

 

class Counter
  cattr_accessor :class_count
  attr_accessor :instance_count
end
 
counter1 = Counter.new
counter1.instance_count = 1
counter1.class_count = 1
 
counter2 = Counter.new
p counter2.instance_count
#> nil
p counter2.class_count
#> 1
 

 

 

分享到:
评论

相关推荐

    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...

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

    'scoped_attr_accessor' 然后执行: $ bundle 或者自己安装: $ gem install scoped_attr_accessor 用法 您可以通过直接在您的类中扩展ScopedAttrAccessor来将范围访问器添加到单个类(及其子类): require 'scoped...

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

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

    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....

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

    请参阅attr_encrypted 生成透明地加密和解密属性的attr_accessors。 它可以与ANY类一起使用,但是,将其与ActiveRecord , DataMapper或Sequel结合使用时,您会获得一些额外的功能。安装将attr_encrypted添加到您的...

    attr_setting:增强的 attr_accessor

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

    详解Python中 __get__和__getattr__和__getattribute__的区别

    ### 详解 Python 中 `__get__` 和 `__getattr__` 与 `__getattribute__` 的区别 在 Python 编程语言中,对象的属性访问机制是非常灵活且强大的。当我们试图通过点号(`.`)操作符去访问一个对象的属性时,Python 会...

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

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

    attr_extras, 使用attr_initialize之类的方法从 ruby 中取出一些样板.zip

    attr_extras, 使用attr_initialize之类的方法从 ruby 中取出一些样板 attr_extras从 ruby 中提取一些样板,降低了提取小型聚焦类的障碍,而不考虑使用 Struct 函数的缺点。代替class InvoiceBuilder def initialize...

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

    西斯sith是Ruby的宏预处理器 仍然是原型。...* labels ) attr_reader ~ { labels } attr_writer ~ { labels }end Ruby文件 class A attr_accessor a, zendsith ruby_file.rb macro_definitions.rb > output

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

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

    ruby_1_9_3_core_rdocs

    `和`Module#attr_accessor`等方法。 8. **异常处理**:新增了`rescue`子句的多重匹配,使得异常处理更加灵活。 9. **Proc对象**:Proc对象现在可以作为块传递,并且支持`lambda`和`proc`两种不同的行为,`lambda`...

    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`则只...

    prototype_oop_javascript_ruby_prototype_

    attr_accessor :name end Person.include(Sayable) person1 = Person.new person1.name = 'Alice' person1.say_hello # 输出 "Hello, Alice" ``` 尽管JavaScript和Ruby在实现OOP上有显著的区别,但它们都允许...

    xfs_attr_leaf.rar_names

    “xfs_attr_leaf.c”和“xfs_attr_leaf.h”两个文件,分别代表了这个机制的源代码实现和头文件定义。在“xfs_attr_leaf.c”中,包含了实现属性叶块操作的函数,如插入新属性、查找属性、更新属性和删除属性等。这些...

    wps_attr_build.rar_building

    WPS_attr_build是与构建WPS属性相关的编程实现,通常涉及到Wi-Fi设备的认证和加密过程。在本文中,我们将深入探讨WPS的属性构建以及`wps_attr_build.c`源代码文件在这一过程中的作用。 1. **WPS简介** WPS是由Wi-...

    attr_copy.rar_The Returning

    描述中提到的"returning the size in bytes"表明`attr_copy`函数不仅复制属性,还会返回复制操作所消耗的存储空间,这对于内存管理和性能优化很重要。了解一个数据结构或对象的大小可以帮助程序员有效地管理内存分配...

    instance:光滑的对象实例 API

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

    PyPI 官网下载 | attr_property-0.0.5-py3-none-any.whl

    "attr_property" 是一个Python库,它可能提供了一种属性访问和处理机制,帮助开发者更便捷地处理对象的属性。在Python中,属性通常用于封装类的成员变量,而"attr_property"可能扩展了这一功能,增加了更多的特性...

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

    3. **自动属性访问器(Automatic Attribute Accessors)**: Ruby提供了一个简化的语法来快速生成getter和setter,即`attr_accessor`。在类定义中,一行`attr_accessor :name`会自动生成`name`和`name=`方法,从而...

Global site tag (gtag.js) - Google Analytics