本文为作者个人学习《Programming Ruby》的学习笔记,记录其中的重点、难点和学习体会,并无意泄露《Programming Ruby(中文版)》中的相关内容。
Ruby中的基本类型包括数字、字符串、数组、哈希表(hash)、区间(range)、符号和正则表达式。
1.整数和浮点数
1)Rub的整数是Fixnum类或Bignum类的对象。Fixnum类和Bignum类的区别在于它们的对象可以表示的字长不相同。Fixnum:可以容纳比本机字长少一位的整数;Bignum:它所表示的整数范围仅受限于本机可用内存的大小。如果Bignum对象的操作结果可以永Fixnum对象表示,那么结果将以Fixnum表示。
2)整数由一个可选的符号标记、一个可选的进制指示符和一个相应进制的字符串组成。
进制指示符:0b代表二进制,0代表八进制,0d代表十进制,0x代表十六进制。如果某整数省略进制指示符,则表示该整数默认为十进制。
3)数字字符串中的下划线字符将被忽略。
例如: 785_456 => 785456
4)在ASSIC字符前加一个问号(?)可以取得其对应的整数值。
例如:
?] => 93
?p => 112
用这种方法不仅可以很方便地获得键盘上每一个单独按键所对应的ASSIC整数值,而且还能取得键盘上组合键所对应的ASSIC整数值。但是有一个前提,即必须知道这些组合键的表示方式。其中,Ctrl组合键字符可以表示为 :?\C-x或者是?\cx(C表示Ctrl键,x表示与Ctrl进行组合的键),例如:
?\C-t =>20 # 等同于?\ct =>20
5)带有小数点或指数的数字字面量被认为是Float对象,Float对象和本机上的Double数据类型大小一样。有一点需要特别注意:小数点后面必须跟一个数字,否则该字面量不能被正确地识别为数字。
例如:1.e3这样的串将试图调用Fixnum类的e3方法。
2.字符串
Ruby中的字符串是8比特字节的序列,是String类的对象。
1)Ruby中的字符串字面量可以用单引号或者是双引号括起来,这两种方法的区别在于对字符串字面量中字符的操作不相同。这里所指的操作主要是在字符串字面量中执行的替换。
2)单引号括起来的字符串字面量:执行的替换较少,除会将\\和\'分别替换为\和'外,其它的反斜线均不进行替换。例如:'how are you\?' =>hao are you\?
3)双引号括起来的字符串字面量:执行的替换较多,反斜线后面的字符都将得到替换,但是有部分字符与反斜线搭配有固定的替换准则,如下表:
双引号字符串中允许的替换<o:p></o:p>
\a <o:p></o:p>
|
Bell/alert (0x07) <o:p></o:p>
|
\nnn <o:p></o:p>
|
Octal nnn<o:p></o:p>
|
\b <o:p></o:p>
|
Backspace (0x08) <o:p></o:p>
|
\xnn <o:p></o:p>
|
Hex nn<o:p></o:p>
|
\e <o:p></o:p>
|
Escape (0x1b) <o:p></o:p>
|
\cx <o:p></o:p>
|
Control-x<o:p></o:p>
|
\f<o:p></o:p>
|
Formfeed (0x<st1:chmetcnv tcsc="0" hasspace="False" sourcevalue="0" numbertype="1" negative="False" w:st="on" unitname="C">0c</st1:chmetcnv>) <o:p></o:p>
|
\C-x<o:p></o:p>
|
Control-x<o:p></o:p>
|
\n <o:p></o:p>
|
Newline (0x<st1:chmetcnv tcsc="0" hasspace="False" sourcevalue="0" numbertype="1" negative="False" w:st="on" unitname="a">0a</st1:chmetcnv>) <o:p></o:p>
|
\M-x<o:p></o:p>
|
Meta-x<o:p></o:p>
|
\r <o:p></o:p>
|
Return (0x0d) <o:p></o:p>
|
\M-\-Cx<o:p></o:p>
|
Meta-control-x<o:p></o:p>
|
\s <o:p></o:p>
|
Space (0x20) <o:p></o:p>
|
\x <o:p></o:p>
|
x<o:p></o:p>
|
\t <o:p></o:p>
|
Tab (0x09) <o:p></o:p>
|
#{code} <o:p></o:p>
|
Value of code<o:p></o:p>
|
\v <o:p></o:p>
|
Vertical tab (0x0b)<o:p></o:p>
|
<o:p> </o:p>
|
<o:p> </o:p>
|
此时,"wel\scome"将不再转换为"welscome",而是:
"wel\scome" => wel come
此外,用双引号括起来的字符串字面量中的表达式也将被替换,例如:
str = "hello,yang!"
"Please say:#{str}" => Please say:hello,yang!
4)输入中相连的单引号字符串和双引号字符串将被连接为一个新的String对象,例如:
"Bro" 'ad' 'vie' "w" => Broadview # 各字符串字面量之间可有空格
5)当字符串字面量用于赋值语句或作为参数时,一个新的String对象将被创建。
6)除单引号和双引号外,Ruby中还有其他3种构造字符串字面量的的方法:q%,Q%和here documents。
3.区间(range)
1)区间有两种表示方式:expr..expr和expr...expr。其中两个点表示的是闭合区间,三个点表示的前闭后开区间。
2)区间可用在条件表达式中,expr1..expr2,当expr1的值为真之前,整个条件表达式的值为假;当expr2的值为真之前,整个条件表达式的值才为真。
3)expr..expr和expr...expr还能构成Range对象。
4.数组
1)数组类的字面量是在方括号间由逗号分割的一连串对象引用组成的。为了理解这句话,请先看下面的这个数组:
arr = [ yang, 34, 43.3, "This is a string", barney("pebbles"), ]
从该数组中可以看出,其字面量包括数字(34,43.3)、字符串("This is a string")和对象的引用(yang,barney("pebbles"), )。其中数字和字符串可以看作是特殊的对象引用,但是yang并不能直接作为数组的字面量,因为真正的字面量是yang所对应的引用的值。
2)数组也可以用简写形式w%和W%构成。
w%形式将空格隔开的token提取为连续的数组元素,在单个字符串内不进行替换,但是在含有反斜线字符时会进行替换,这一点与单引号构造字符串字面量的规则相同。
W%也是将单词列表转换为数组,同样对每个词执行和双引号字符串一样的替换规则。
分享到:
相关推荐
"The Ruby Way.chm"则可能是《The Ruby Way》一书的电子版,这是一本深入介绍Ruby编程实践的书籍,它不仅讲解了Ruby的基本语法,还分享了编写高效、简洁Ruby代码的技巧。书中可能包含了大量的示例代码和实践案例,...
在Ruby中,异常类是继承自`StandardError`的,你可以自定义异常类来处理特定类型的错误。 Ruby on Rails是Ruby最著名的Web开发框架,它遵循MVC(模型-视图-控制器)架构模式。这份文档可能也涵盖了Rails的相关内容...
在Ruby中,一切都是对象,包括基本的数据类型如字符串、数字和布尔值。这种特性使得Ruby在处理复杂问题时具有很高的灵活性。文档中将详细讲解Ruby的基础语法,如变量声明、控制结构(条件语句、循环)、函数和方法...
变量在Ruby中有四种类型:局部变量(以小写字母或下划线开头)、实例变量(以`@`开头)、类变量(以`@@`开头)和全局变量(以`$`开头)。数据类型包括字符串、数字、布尔值、数组、哈希等。控制结构包括条件语句(如...
通过这个中文手册,开发者不仅可以学习到Ruby的基本语法,还可以了解到更高级的主题,如元编程、闭包、 Blocks、Proc对象和Symbol,以及如何利用Ruby的灵活性来创建高效、简洁的代码。同时,了解RGSS可以让开发者...
- **面向对象**:Ruby的万物皆对象,所有的数据都是对象,连基本类型也不例外,这使得面向对象编程更加自然。 - **块和闭包**:Ruby中的块和闭包提供了强大的代码组织和复用能力,是实现高阶编程的关键。 - **元编程...
Ruby还是一个面向对象的语言,每个值都是一个对象,包括基本类型如数字和字符串。类和对象是Ruby的核心概念,你可以自定义类并创建实例。例如,创建一个名为`Person`的类并初始化姓名: ```ruby class Person def ...
1. **基础语法**:Ruby的基本数据类型,如整型、浮点型、字符串、数组、哈希等,以及变量的使用,如局部变量、实例变量和全局变量。 2. **控制结构**:包括条件语句(如if/else,case)和循环(如for,while,until...
1. **面向对象**:Ruby是完全面向对象的语言,一切皆为对象,甚至基本的数据类型如整数、字符串和布尔值。它支持类、继承、封装、多态等面向对象概念,允许开发者通过定义类和模块来组织代码。 2. **动态性**:Ruby...
概括、ruby中的基本数据类型都是类类型,只不过为了书写和阅读的方便,为基本数据类型提供了较为简洁的书写方式而已。 一、数值类型 整数支持二进制,八进制,十进制,十六进制,根据整数的大小动态决定整数是Fixnum...
7. **Ruby的鸭子类型**:Ruby强调“鸭子若能走路并嘎嘎叫,那它就是鸭子”,这意味着类型检查通常在运行时进行,这为元编程提供了便利。 通过学习“Ruby元编程第二版”,开发者将深入了解如何使用这些工具来编写...
通过深入学习这个Ruby中文教程,你将能够掌握这门语言的基本概念和核心机制,为进一步学习Ruby on Rails或其他Ruby相关的技术打下坚实的基础。同时,实践源代码将使理论知识更加生动和实用,助你在编程世界中...
数字类型是Ruby中最基本的数据类型之一,它分为整数(Integer)和浮点数(Float)两大类。Ruby中的数字类型支持常见的数学运算,如加减乘除等,并且可以进行比较操作。 - **整数(Integer)**:表示没有小数部分的...
- **面向对象**:Ruby是一种纯粹的面向对象语言,所有的数据结构都是对象,包括整数、字符串等基本类型。 - **动态性**:Ruby是一种动态类型语言,可以在运行时修改类和对象的行为。 - **可扩展性**:Ruby可以...
这意味着包括基本类型如整数、字符串和布尔值在内的所有数据都有类和方法,可以进行对象间的交互。这种面向对象特性使得Ruby具有高度的灵活性,程序员可以通过组合和复用对象来构建复杂的应用程序。 Ruby提供了直接...
1. **Ruby基础**:首先,你需要熟悉Ruby的基本语法,包括变量、数据类型、控制结构、类和模块等。这将帮助你编写Watir测试脚本。 2. **Watir库的安装**:通过Ruby的包管理器Gem来安装Watir库,通常使用命令`gem ...
在Ruby语言中文教程中,你将学到以下关键知识点: 1. **基础语法**:Ruby的语法简洁明了,易于理解。包括变量(局部变量、实例变量、类变量和全局变量)、常量、数据类型(如字符串、数字、布尔值、数组、哈希)...
数据类型方面,Ruby有基本的数据类型,如字符串(String)、整数(Integer)、浮点数(Float)、布尔值(TrueClass/FalseClass)以及符号(Symbol)。数组(Array)和哈希(Hash)是两种重要的复合数据类型,数组...
1. **面向对象**:Ruby是完全的面向对象语言,每一个数据都是对象,包括基本类型如整数、字符串和布尔值。所有操作都是通过消息传递给对象来完成的。 2. **动态性**:Ruby支持动态类型,变量的类型在运行时确定,...