Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6325090
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: Python/Ruby

2013-05-10 06:06:48

原文地址:Ruby编程基础 作者:mq24705

一、      Ruby源代码中既可以定义一个方法,也可以定义一个类,还可以直接放置可执行代码,可执行代码还可以直接放在类中定义。Ruby解释器将从程序的第一行可执行代码开始执行。

二、      Ruby区分大小写

三、      Ruby程序的注释

1.    合理的代码注释应该占源代码的1/3左右。

2.    单行注释,Ruby使用#表示注释的开始,除此之外,单行注释也是Ruby代码的文档注释。文档注释就是可以通过rdoc命令提取的注释。提示:当我们在进行Ruby编程时,一定要多查阅系统内建类的API文档,这些API文档才是我们参考的权威资料。

3.    多行注释,=begin行和=end行之间的所有代码。要注意的是=begin和=end必须顶格写,不能缩进。

四、      Ruby中的标识符

1.    以‘$’开头的变量:全局变量

2.    以‘@’开头的变量:实例变量

3.    以‘@@’开头的变量:类变量

4.    以小写字母或者下划线开头的变量:局部变量

5.    以大写字母开头的变量:常量

五、      Ruby的垃圾回收:在Ruby语言中,内存区域的开辟、后续内存的释放和回收都是由Ruby解释器完成的。

六、      常量

1.    Ruby是弱类型语言,这意味着定义Ruby变量时无须指定该变量的数据类型。

2.    普通常量:以大写字母(A-Z)开头,Ruby中对已定义的常量进行赋值不会出现错误,只是出现警告。事实上,常量只能在类、模块里定义,决不能在方法里定义。当然,我们也可以在顶层对象中定义常量。

3.    常量的范围:定义常量的类、模块的内部。还可以在该类的子类中访问该常量。

4.    类名和模块名常量:当我们定义一个类或者一个模块时,系统在生成类对象、模块对象的时候,还会将该类对象、模块对象赋值给一个与该类、该模块同名的常数。

七、      变量及变量的作用域

1.    局部变量:以小写字母(a-z)或下划线开头。局部变量不可在内部类和子类中访问。内部类无法访问外部类的局部变量。

2.    全局变量:以“$”开头的变量。

3.    实例变量:以’@’开头的变量。Ruby语言是一门动态语言,因此Ruby的实例变量无须声明,每个实例变量都是在第一次出现时动态加入对象。注意:Ruby语言里的对象完全是动态的,创建对象时该对象没有任何实例变量,直到执行到为实例变量定义时,该对象才动态增加该实例变量。实例变量的访问范围总是private

4.    通过Moudle里的4个方法attr,attr_reader,attr_writerattr_accessor来创建实例变量及其对应的访问方法更加简单。除此之外,我们也可以在模块中定义实例变量,其目的是用于将该实例变量混入其他类中。

方法类无法访问类范围的实例变量。如果我们希望暴露类范围的实例变量,可以通过定义一个类方法来暴露它。

5.    类变量:以“@@”开头的变量是类变量。既可以在类定义中定义,也可以在模块中定义,还可以在方法中定义。与实例变量不同的是,类变量必须先定义,然后才可以使用。

也可以在方法中定义类变量,但在方法中定义类变量后,只有当方法被调用之后,该变量才会生效。

类变量的特殊性:一个类、其子类以及它们的实例的同名类变量共享了同一块内存区域。

类变量默认是protected

八、      基本数据类型

Ruby里的基本数据类型变量也是一个对象,系统有与之对应的类。Ruby是一门弱语言,使用Ruby变量无须声明类型,当为一个变量赋值就是定义了该变量。弱类型语言的一个特征:同一个变量的数据类型可以变化。

1.    数值型:包括整数和浮点数。整数包括FixnumBignum,其中Fixnum可以容纳比一个物理字长少一位的整数,当一个整数超过Fixnum范围时,它会自动转换成BignumBignum类型的范围只能被物理内存限制。

2.    字符串:Ruby允许使用单引号或双引号来创建字符串,但(’ ’)和(“ ”)括起来的字符串并不完全相同。一般而言:单引号括起来的字符串里,只进行最少的替换,而双引号括起来的字符串里,会进行更多的替换。

字符串的%表示法:如果我们希望一个字符串是由多行字符组成,则可以使用“%”表示法。三种形式:%/stuff/%Q/stuff/%q/stuff/。。。//为分隔符,可以是斜线、括号等字符。

多行字符串的字面值:Ruby提供一种多行字符串的表示方法,这种语法也被称为Here Document。常用格式如下:

<<标识符

      stuff

标识符                         :标识符可以是任意的。

必须注意的是:使用“<<标识符“代表一个字符串时,该字符串定义必须紧随其后。”<<标识符“第二行内容就是所代表的的字符串内容。

九、      范围

1 .. 2:定义一个从值1到值2的范围,包括值1和值2

1 … 2: 定义一个从值1到值2的范围,包括值1,但不包括值2Ruby中的范围也是一个对象,是Range类的实例。

Ruby也允许我们使用自定义类的对象来创建Range对象。。但要求自定义对象的类必须实现一个succ方法,以返回下一个值;而且这个对象也必须支持<=>来与其他对象进行比较。

十、      正则表达式

1.    创建正则表达式:可以采用字面值创建,也可以采用创建Regexp类实例的方式来创建正则表达式。此外,还有一种”%表示法

十一、 数组:Ruby数组里的数据元素类型可以互不相同,而且数组长度也是可变的。Ruby里的数组是Array类的实例。所以可以通过创建Array的实例来创建数组。

1.数组的%标示方法:Ruby语言可以把一个包含多个空格的字符串转换成数组。Ruby会把空格当成数组分隔符。转换时需要使用“%W{…}“或者”%w{…}“。。Ruby会把字符串中的空格当成数组元素分隔符,如果希望某个数组元素中包含空格,则可以使用反斜杠(\)进行转义。

十二、Hash对象

1.    定义hash对象:定义hash对象不仅要定义该hash对象里包含的元素,还应该定义该元素对应的Keyhash对象由一系列花括号里的key-value对组成,多个key-value对之间以英文逗号隔开,keyvalue之间由”=>”隔开,最后一个逗号会被忽略。注意:如果为同一索引的元素两次指定元素值,则后面指定的元素值会覆盖前面指定的元素值。

十三、符号对象

      通过如下方式产生符号:

      :标识符            :变量名     :操作符

      每个符号的实例只有一个,一个特定的对象名总是产生相同的符号对象,不论对象名在程序中是如何被使用的。一个符号对象最常用的地方就是用它来代表变量名或者方法名。

阅读(682) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~