`

Ruby语法解释:attr_reader

    博客分类:
  • ROR
阅读更多

转载自:http://www.66rpg.com/htm/news391.htm

 

问:

attr_reader:(name)
说明上写的是:定义 name 属性的读取方法
但是,读取方式是什么呢?


答:

attr_reader:abc

这样的定义使得即使通过这个类的对象,在外部也只能访问到这个abc属性的值,而不能修改。

比如game_actor里的name属性,你可以通过game_actor类的对象比如 $game_actors[1]来访问这个name属性  $game_actors[1].name 但不可以通过 $game_actors[1].name = "星矢" 来改变这个属性的值~~~

 


答2:

attr_reader :abc

你可以在对象的实例中用
实例名.abc 得到这个变量的值,但不能修改,它相当于

def abc
 return @abc
end

顺便说一下attr_writer和attr_accessor,它相当于

attr_writer :abc
def abc=(abc)
 @abc = abc
end
在这个情况下你不能通过实例名.abc获得abc的值,但是可以通过
实例名.abc = 表达式 设置abc的值

attr_accessor :abc
等同于
def abc
 return @abc
end
def abc=(abc)
 @abc = abc
end

你可以用实例名.abc获得,也可以用实例名.abc=值来设置

有的时候,获得/设置并非简单的内部变量赋值,所以需要通过使用attr_reader和attr_writer来部分简化定义描述
可以参见Game_Battler的
attr_reader :hp

def hp=(hp)
两个方法

分享到:
评论

相关推荐

    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 语言中类与对象简介,入门级语法介绍

    ### Ruby 语言中类与对象简介及入门级语法详解 #### 一、Ruby中的面向对象概念 Ruby是一种纯粹的面向对象编程语言,这意味着在Ruby中几乎所有的内容都是对象。面向对象编程(Object-Oriented Programming,OOP)的...

    Ruby从入门到精通pdf

    - 属性与方法:通过attr_accessor、attr_reader和attr_writer定义属性,方法可以动态添加和删除。 - 构造器:Ruby中的构造器通常是initialize方法,用于初始化新对象。 3. **块与闭包**: - 块:Ruby中的代码块...

    Ruby元编程第二版中文

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

    Ruby最简单的初级教程

    4. 包装器方法:Ruby提供`attr_accessor`, `attr_reader`, `attr_writer`快捷方式来生成getter和setter方法。 四、Ruby的块、迭代器与闭包 1. 块:Ruby中的块是一段代码,可以通过`do..end`或`{..}`定义,常用于...

    Ruby语言中文教程

    Ruby是一种面向对象的脚本语言,它以其...通过这个中文教程,你将能够从零开始,逐步掌握Ruby语言的各个方面,无论是基础语法还是高级特性,都能得到详尽的解释和实例演示。不断实践,你将成为一名熟练的Ruby开发者。

    Ruby In a Nutshell

    - `attr_accessor`、`attr_reader`和`attr_writer`简化属性的创建。 5. **模块(Module)** - 模块用于封装相关的方法和常量,也可以用于实现类的多重继承。 - 使用`include`将模块的成员导入到类中,`extend`将...

    ruby初级中文教程与实例

    4. 属性和访问器:Ruby提供`attr_accessor`、`attr_reader`和`attr_writer`宏来快速定义属性的读写方法。 5. 构造器与初始化:在Ruby中,`initialize`方法是构造器,用于对象的初始化。 三、模块和混入 1. 模块...

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

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

    metaprogramming_introduction:一篇以源代码形式介绍Ruby元编程基础知识的文章-Form source code

    此外,Ruby的`Module#attr_accessor`, `attr_reader`, 和 `attr_writer`也是元编程的体现,它们简化了属性的创建: ```ruby class Person attr_accessor :name end person = Person.new person.name = 'Alice' ...

    Ruby 代码规范

    Ruby是一种动态、面向对象的编程语言,以其优雅的语法和强大的元编程能力而闻名。为了确保代码的可读性、可维护性和团队协作的效率,遵循一定的代码规范至关重要。本篇文章将深入探讨Ruby代码规范,帮助开发者养成...

    Ruby入门培训ppt/pdf及代码

    通过`class`定义类,`new`创建对象,`attr_accessor`、`attr_reader`和`attr_writer`用于生成getter和setter方法。 ### Ruby Learning 这个压缩包可能包含了一个PPT和PDF文档,以及一些示例代码,帮助初学者理解...

    Ruby语言相关项目的示例

    - `attr_accessor`, `attr_reader`, `attr_writer`用于快速生成getter和setter方法。 4. **块和 Proc/Lambda** - 块是Ruby中的一段可执行代码,可以用do..end或{}定义,通常与迭代器配合使用。 - Proc和Lambda是...

    Ruby Sheet.pdf

    - **属性访问器**:`attr_reader`, `attr_writer`, `attr`, `attr_accessor`。 - **别名定义**:`alias new old`。 #### 运算符及优先级 Ruby支持丰富的运算符,并且定义了运算符的优先级,以确定表达式中各部分的...

    Ruby 基础

    - **属性** 通常用 `attr_accessor`,`attr_reader` 或 `attr_writer` 自动创建 getter 和 setter 方法。 6. **面向对象** - **消息传递** 是Ruby的核心,通过`.`调用对象的方法。 - **模块混合** (`include` 或...

    学习ruby一些重点总结,以及部门代码实例,个人认为还是比较细致的

    Ruby是一种面向对象的编程语言,以其简洁和优雅的语法著称。在学习Ruby时,有几个重要的概念和特性需要掌握。 1. **属性访问器(Accessor)**: - `attr_writer :motherland` 创建了一个setter方法,允许设置实例...

    ror系列

    书中讲解了类的属性和方法,以及如何通过`attr_accessor`、`attr_reader`和`attr_writer`快捷创建属性。 4. **模块**:模块用于组织代码,提供命名空间,并且可以实现多重继承的效果。书中解释了如何定义和使用模块...

    Ruby中的字符串编写示例

    attr_reader :first_name, :last_name def initialize(first_name, last_name) @first_name = first_name @last_name = last_name end # 错误示例 def to_s "#@first_name#@last_name" end # 正确示例 ...

    将复杂的SQL查询refactor成model形式

    在编写模型类时,我们还可以利用`attr_accessor`, `attr_reader`, `attr_writer`这三个方法来声明实例变量供外部使用。`attr_accessor`提供读写权限,`attr_reader`只提供读权限,而`attr_writer`则只提供写权限。...

    Ruby初学笔记之Hello World

    attr_reader :msg def initialize @msg = "Hello, World!" end end h = Hello.new puts h.msg ``` ### 安装Ruby 在开始编写Ruby程序之前,需要确保已经安装了Ruby环境。对于Windows用户,可以访问...

Global site tag (gtag.js) - Google Analytics