转载自: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中,通常我们使用`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中几乎所有的内容都是对象。面向对象编程(Object-Oriented Programming,OOP)的...
- 属性与方法:通过attr_accessor、attr_reader和attr_writer定义属性,方法可以动态添加和删除。 - 构造器:Ruby中的构造器通常是initialize方法,用于初始化新对象。 3. **块与闭包**: - 块:Ruby中的代码块...
`attr_accessor`、`attr_reader`和`attr_writer`是用于快速创建属性的元编程工具。符号(Symbol)在Ruby中是特殊的,它们在内存中只存在一份,常用于元编程中的键值。 5. **Proc对象与lambda**:Ruby的`Proc`和`...
4. 包装器方法:Ruby提供`attr_accessor`, `attr_reader`, `attr_writer`快捷方式来生成getter和setter方法。 四、Ruby的块、迭代器与闭包 1. 块:Ruby中的块是一段代码,可以通过`do..end`或`{..}`定义,常用于...
Ruby是一种面向对象的脚本语言,它以其...通过这个中文教程,你将能够从零开始,逐步掌握Ruby语言的各个方面,无论是基础语法还是高级特性,都能得到详尽的解释和实例演示。不断实践,你将成为一名熟练的Ruby开发者。
- `attr_accessor`、`attr_reader`和`attr_writer`简化属性的创建。 5. **模块(Module)** - 模块用于封装相关的方法和常量,也可以用于实现类的多重继承。 - 使用`include`将模块的成员导入到类中,`extend`将...
4. 属性和访问器:Ruby提供`attr_accessor`、`attr_reader`和`attr_writer`宏来快速定义属性的读写方法。 5. 构造器与初始化:在Ruby中,`initialize`方法是构造器,用于对象的初始化。 三、模块和混入 1. 模块...
3. **自动属性访问器(Automatic Attribute Accessors)**: Ruby提供了一个简化的语法来快速生成getter和setter,即`attr_accessor`。在类定义中,一行`attr_accessor :name`会自动生成`name`和`name=`方法,从而...
此外,Ruby的`Module#attr_accessor`, `attr_reader`, 和 `attr_writer`也是元编程的体现,它们简化了属性的创建: ```ruby class Person attr_accessor :name end person = Person.new person.name = 'Alice' ...
Ruby是一种动态、面向对象的编程语言,以其优雅的语法和强大的元编程能力而闻名。为了确保代码的可读性、可维护性和团队协作的效率,遵循一定的代码规范至关重要。本篇文章将深入探讨Ruby代码规范,帮助开发者养成...
通过`class`定义类,`new`创建对象,`attr_accessor`、`attr_reader`和`attr_writer`用于生成getter和setter方法。 ### Ruby Learning 这个压缩包可能包含了一个PPT和PDF文档,以及一些示例代码,帮助初学者理解...
- `attr_accessor`, `attr_reader`, `attr_writer`用于快速生成getter和setter方法。 4. **块和 Proc/Lambda** - 块是Ruby中的一段可执行代码,可以用do..end或{}定义,通常与迭代器配合使用。 - Proc和Lambda是...
- **属性访问器**:`attr_reader`, `attr_writer`, `attr`, `attr_accessor`。 - **别名定义**:`alias new old`。 #### 运算符及优先级 Ruby支持丰富的运算符,并且定义了运算符的优先级,以确定表达式中各部分的...
- **属性** 通常用 `attr_accessor`,`attr_reader` 或 `attr_writer` 自动创建 getter 和 setter 方法。 6. **面向对象** - **消息传递** 是Ruby的核心,通过`.`调用对象的方法。 - **模块混合** (`include` 或...
Ruby是一种面向对象的编程语言,以其简洁和优雅的语法著称。在学习Ruby时,有几个重要的概念和特性需要掌握。 1. **属性访问器(Accessor)**: - `attr_writer :motherland` 创建了一个setter方法,允许设置实例...
书中讲解了类的属性和方法,以及如何通过`attr_accessor`、`attr_reader`和`attr_writer`快捷创建属性。 4. **模块**:模块用于组织代码,提供命名空间,并且可以实现多重继承的效果。书中解释了如何定义和使用模块...
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 # 正确示例 ...
在编写模型类时,我们还可以利用`attr_accessor`, `attr_reader`, `attr_writer`这三个方法来声明实例变量供外部使用。`attr_accessor`提供读写权限,`attr_reader`只提供读权限,而`attr_writer`则只提供写权限。...
attr_reader :msg def initialize @msg = "Hello, World!" end end h = Hello.new puts h.msg ``` ### 安装Ruby 在开始编写Ruby程序之前,需要确保已经安装了Ruby环境。对于Windows用户,可以访问...