一、类属性声明
一个对象的外部可见部分被称其为属性。ruby通过对象的实例变量来表示对象的内部状态,即,属性。既然是对外部可见的。Ruby中,实例变量无法直接为对象外使用,只能通过对象定义的操作方法访问。同理,实例变量也不能变成public变量,同样是通过方法访问
那就是可以通过某种方式读取和修改的。Ruby中是通过定义方法来访问属性。有两种方法方式:
1、直接定义类属性的方法
ruby 代码
-
-
- class Test
- def initialize(name)
- @name=name
- end
- def name
- @name
- end
- def name=(att)
- @name=att
- end
- end
这里为属性name对外提供了读取和删除的方法
2、通过Module的方法定义
该声明不是Ruby语法的一部分,它不过是定义在类Module的方法,该方法会自动创建访问类属性的方法
ruby 代码
- class name
- attr: attribute[,writable]
-
- attr_reader :attribute[,attribute,......]
-
- attr_wirter :attribute[,attribute,......]
-
- attr_accessor :attribute[,attribute,......]
-
- end
attr :直接定义属性,默认的只读,如果后面跟true,表示属性可写,false为只读
ruby 代码
- class Test
- attr :foo, true
- attr :read
- end
- c = Test.new
- c.foo = 5
- p c.foo
-
- c.read='ok'
-
attr_reader: 表示该方法只读,该方法自动创建如下方法:
ruby 代码
- class name
-
- def attribute
-
- attribute
- end
- end
attr_writer:表示属性只写。它只创建修改属性的方法。不能从外部访问该属性该方法自动创建如下方法:
ruby 代码
- class name
-
- def attribute=(att)
- attribute=att
- end
- end
ruby 代码
- class name
-
- def attribute
-
- attribute
- end
-
- def attribute=(att)
- attribute=att
- end
- end
二、实例变量,类变量
1、实例变量
Ruby规定实例变量是以@开头,后跟一个名字。对实例变量的访问注意
a、在类内部可以对其赋值和读取没有限制
b、类外不能直接访问对象的实例变量,只能通过方法访问。正如上面所说的属性访问方式一样。
c、实例变量在使用前不用必须初始化。
2、类变量
Ruby规定类变量是以两个@@开头,后跟一个名字。对于一个给定的类而言,类变量只存在一份拷贝。
注意:
1、类变量必须在使用之前要初始化。
2、类变量是私有的。要想能从类外部访问,必须定义方法访问。这个方法是一个实例方法,要么是一个类方法。
3、通常类变量属于包含该变量的最内层的类或模块。但是,可以为被定义该变量的类的所有子类所共享
三、类常量
Ruby 的常量也是对对象的引用,常量通常在第一次被赋值的时候创建(通常是在类或模块中定义)。和其他语言不一样,
Ruby允许改变常量的值,因为常量是对对象的引用,通过改变常量的值,可以改变它所引用的对象的内部状态。
1、在类或模块中的任何位置都可以直接访问该类或模块中定义的常量。
2、在类或模块外,可以通过在域作用符::前加上一个返回适当类或模块对象的表达式来访问。
3、对于不属于任何类或模块的常量,可以直接访问或使用不带前缀的域作用符来访问
4、通过在常量名之前使用类或模块名和域作用符,还可以将常量从外面添加到已存在的类或模块中。
注意:
1、类名本身就是常量。这就意味着可以把类和其他Ruby对象一样对待:可以拷贝它们;将它们作为参数传入方法;或者在表达式中使用它们
2、如果一个无名的类赋值给了一个常量。Ruby将常量作为类名。
attr_accessor: 该方法自动创建两个方法,一个用于读取属性值,一个用于修改属性值四、方法
1、实例方法
实例方法的定义就是通常的方法定义。其作用域就是每个特定的对象。用于访问该对象的内部状态和行为。
实例方法的定义是保存在对象所属类对象的定义中。如果没有,就到类对象的父类对象中查找。依次类推
2、类方法
在方法名前放置类名以及一个点,来定义类方法
def classname.methodname
.....
end
类方法的定义是保存在类对象的虚拟类中。当调用类方法时,是到虚拟的类中寻找。如果没有,就到虚拟类的父类中查找。依次类推。
分享到:
- 2007-05-11 14:13
- 浏览 9310
- 评论(0)
- 论坛回复 / 浏览 (0 / 5605)
- 查看更多
相关推荐
### Ruby语言教程:深入解析Ruby变量类型 #### 一、引言 在编程语言中,变量扮演着极其重要的角色,它们用于存储数据并在程序运行过程中对其进行操作。Ruby 作为一种动态类型的脚本语言,提供了多种变量类型,使得...
此外,Ruby 拥有一个非常强大的标准库,其中包含了大量用于各种任务的类和方法,如文件处理、文本处理等,这使得开发者可以轻松地开发出功能丰富的应用程序。最为人所熟知的是 Ruby on Rails,这是一个基于 Ruby 的 ...
6. **常量、变量和符号**:Ruby的常量、局部变量和符号在运行时也可以被查询和修改,尽管常量的修改可能会导致警告。 7. **Closures和Proc对象**:Ruby的lambda和Proc对象是闭包,它们能捕获定义时的环境并保存下来...
在对Ruby进行了简要的综述之后,《Ruby编程语言》详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、proc、lambda和闭包,反射和元编程,Ruby平台。本书还包含对...
总的来说,Ruby中的常量是一种特殊的标识符,它们在类或模块内定义,遵循大写字母开头的命名约定,并且可以在类/模块外部通过`::`操作符访问。尽管可以改变常量的值,但这通常不推荐,因为这可能会导致不可预期的...
Ruby也支持变量(局部变量、实例变量、类变量和全局变量),以及常量。 2. **面向对象编程**:Ruby是彻头彻尾的面向对象语言,一切皆对象。每个变量都是一个对象,具有属性(或称为实例变量)和行为(方法)。Ruby...
在学习Ruby之前,我们首先需要掌握其基础语法,这包括变量、常量和数据类型的定义及使用,以及运算符和控制流语句。随后,我们将深入面向对象编程,探讨类、对象、继承和多态。了解了基础语法和面向对象编程后,我们...
- Ruby允许在运行时修改自身,源代码将展示如何利用元编程技巧动态定义和修改类和方法。 9. **线程与并发** - Ruby的线程模型,以及如何实现并发编程,包括`Thread`类和`Mutex`同步原语。 10. **Gem和包管理** ...
Ruby元编程的核心概念包括类、模块、方法、变量和对象的动态性。以下是对这些概念的详细解释: 1. **类与模块**:在Ruby中,类和模块都是对象。你可以动态地创建和修改它们。例如,你可以通过`Class.new`创建一个新...
类包含属性(实例变量)和方法。 二、Ruby的面向对象特性 1. 继承:Ruby中的类可以继承自其他类,使用`操作符表示。子类会继承父类的所有属性和方法。 2. 多态:通过方法重写,子类可以提供不同于父类的实现,...
Ruby支持四种类型的变量:局部变量、实例变量、类变量和全局变量,它们各自在不同范围内起作用。常量是不可变的标识符,而符号是内存效率高的特殊类型,常用于哈希键。了解这些基础知识是编写有效Ruby代码的前提。 ...
每个类或模块的页面会列出其方法、属性和其他相关信息。对于每个方法,都会详细说明参数、返回值和可能的错误情况。 总之,Ruby 1.8.6 API HTML 是开发者学习和使用这个版本 Ruby 的重要参考资料,它提供了全面的...
1. **变量**:Ruby中的变量分为五种类型:局部变量(以小写字母或下划线开头)、实例变量(以`@`开头)、类变量(以`@@`开头)、全局变量(以`$`开头)和常量(以大写字母开头)。理解它们的作用域和用法是掌握Ruby...
- **类和对象**:Ruby支持传统的类定义和实例化对象的方式。 - **继承**:类之间可以通过继承关系共享属性和方法。 - **方法**:对象通过方法进行交互,方法可以是类方法或实例方法。 - **模块与混合**:Ruby支持...
**常量定义**:定义类级常量。 3. **类变量/实例定义**:定义类变量或类级实例。 4. **公共方法**:定义公共的类方法。 5. **控制属性**:定义通过`attr_accessor`等生成的属性。 6. **初始化方法**:定义`...
- 模块用于封装相关的方法和常量,也可以用于实现类的多重继承。 - 使用`include`将模块的成员导入到类中,`extend`将模块的方法添加到对象实例上。 6. **异常处理** - `begin-rescue-end`用于捕获和处理异常。 ...
Ruby中的类与对象关系密切,类定义了对象的行为和属性,对象则是类的实例化,拥有类定义的所有特征。 在Ruby编程环境中,安装和配置Ruby是开始学习的第一步。Ruby可以在多种操作系统上运行,包括Windows和Linux。...
通过"ruby入门练习题",你将有机会实践这些概念,理解如何定义和使用类,如何操作对象,以及如何利用Ruby的特性来解决问题。这些练习题可能会涉及到数据库连接,这将让你了解如何在Ruby中使用像`ActiveRecord`这样的...
1. **方法定义与调用**:Ruby允许在运行时定义和修改方法,如`define_method`函数可以动态创建方法,而`send`或`__send__`则用于在运行时调用方法。 2. **类与模块操作**:Ruby的`Class.new`和`Module.new`可以用来...