RubyProgramming:向Ruby之父学程序设计pdf

Posted longgg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RubyProgramming:向Ruby之父学程序设计pdf相关的知识,希望对你有一定的参考价值。

下载地址:网盘下载

 

 

 

内 容 简 介

编辑
Ruby是为了让程序设计更快乐而开发的程序语言。Ruby具有“彻底面向对象”、“丰富的程序库”、“亲和力高的直观语法形式”等多项特征,但这些特征并不是Ruby的目的,只能说是为了让程序设计更有趣而开发的手段罢了。
希望本书的读者,都能从使用Ruby的过程中,找到属于自己的“兴趣”与“乐趣”。──若您可以这样灵活运用,那将是本书作者无上的荣幸了。

审校者序

编辑
正如本书的著者高桥征义和后藤裕藏先生是在意想之外接过此书的改版任务一样,我也是非常意外地接到本书的中文版的审校任务。通过对本书日文版和繁体版的通读以及动手作业对本书的程序代码进行验证、对文字进行校对,我要讲的是,本书的确是Ruby书籍中的上乘之作,非常适合初学者,对于有一定经验的Ruby程序员,此书中的真知灼见一样会使你收益无穷。
为什么要这样说呢?首先我们看看国内原创的出版物,含混晦涩者比比皆是。而此书的作者在行文取材方面,非常符合初学者的认知规律,该简单的地方简单,该详述的地方详细,并赋予生动的例子和解说,循序渐进地将读者引入一个更高的理解层次。在使用此书时,你无须咬文嚼字,也不会出现味如嚼蜡、一头雾水的感受。相反地,在通读本书的同时,你所感受到的是一种不满足,但又极为兴奋的成就感。于是,你不得不佩服著者本人的文字功底水平,以及其对读者心理的极度揣摩。此外,对照日文版,著者行文的每一句话都经过仔细地斟酌,在这一点上你不得不佩服日本人的认真。唉,凡事只怕认真!在国内很多的原创出版物身上,“认真”两字,恐怕是水中的月亮——可望不可及。
那成书的质量如何呢?本书的日文版审校者,Ruby的创始人松本行弘给本书非常高的评价,认为这是一本能够让读者快乐学习Ruby,能够为读者“开启Ruby程序设计大门”的一本高质量的图书。
翻译质量怎么样呢?本书传承于繁体版,并注意到了中国大陆和台湾在专业术语方面的差异,因而比较适合大陆读者阅读。此外,本书语言比较口语化,显得生动、简单,读起来完全没有含混晦涩的感觉。就翻译质量这一点来说,最简单的举证从繁体版在台湾的销售行情和读者们的褒奖上就可以看出来,本书是一本高质量的图书。
由于Ruby是日本人所发明,本书中涉及了一些在日本专用的程序设计内容,如邮政编码、日文编码等,读者可以自行取舍。
最后,祝读者们在通读本书时学有所成。
张 华
2008年9月9日
第二版审订者序
看着电视里的足球选手踢球赛,感觉似乎没有这么困难。这些选手们无论是运球还是射门都看似轻而易举,但在我们所看不见的背后,绝对是经过日以继夜的锻炼,像我们这种外行人员如果混进这些选手里,不要说尽情踢球了,能不能碰到球都很有问题。就好像是看似优雅地浮在水面上的天鹅,其实水面下的双脚无时无刻地都在拼命地划着水,这个世界上,充满了各式各样表面上所无法看见的努力。
或许程序设计也是这样。有经验的程序设计师,就好像是念着咒语一样对电脑输入程序码,就看似能够自由操作电脑。而且,这种人嘴边一定挂着“写程序很快乐喔!”之类的话语。但对没有程序经验的人来说,程序设计和魔术就好比是亲戚一样,电脑就像是魔法箱,但总是没办法自由自在地操纵。
但仔细一想,这些有经验的程序设计师也都是一般人,而电脑只不过是工具而已。有些人能感觉到“很快乐”,但也有人感到无比痛苦,这背后一定隐藏着什么秘密。
本书的主题是程序语言Ruby,它就是其中一项秘密。Ruby语言里蕴藏着让写程序更轻松的各种秘密,是我这个熟练的程序设计师所开发出来的——“想尽办法让自己写程序更轻松”的程序语言。使用Ruby,能够更容易让电脑听话。
本书是学习Ruby语言的助手。本书的初版是一本颇受各界好评的入门书籍,四年后出版这本第二版,配合Ruby本身的版本从1.6提升到1.8,修订了相关内容。第二版不只保留了原来浅显易懂的说明,更追随Ruby的新版本补充了相关的介绍。
相信本书能帮助读者的程序设计技术水平比现在连跳一到两级,充分发挥Ruby的功力!
Enjoy Programming!
松本行弘
2006年7月

初版审订者序

编辑
体会使用者的感受,才能做出好作品。至少,我了解Ruby的使用者,也就是程序设计师的感受,所以能设计出反映程序设计师感受的程序语言。当然,我自己就是Ruby的使用者之一,所以这里所说的程序设计师的感受,说穿了就是坦率面对自己的欲望需求。相信“遵循‘自然’的法则,不去违逆使用者的感受”,就是Ruby成功的关键之一。
从这个角度来说,要写一本适合初学者的好书,或许是世界上最难的一件事。
要写一本给初学者看的书,首先作者必须广泛熟悉要说明的主题。对于进阶的使用者,可能很容易抓到感觉到的东西;但对初学者来说,就无法天真地这样期待。对初学者来说,很多可能会卡住的地方,最好都能有详细的说明。但是,初学者的基础知识也不够,所以书写得越详细,反而会变成更有压力的一本书。
另外,若不知道初学者的想法、初学者抱有什么疑问、初学者会在哪里卡住,也无法写出适合初学者的好书。拥有知识足以撰写初学者所用书籍的人,都不会是初学者,也因为自己已经不是初学者了,往往也都忘记自己身为初学者时的感受。总之,写本适合初学者的书,需要上面所述的平衡点(译者注:详细与初学者基础知识之间),更仔细地体会使用者的感受才行。
想到市面上充斥着一堆标榜着“入门”但完全称不上是入门的书籍,就能更加印证上面说的这些难点。
不过,本书不会违逆初学者的感受。本书放弃了一堆艰涩的用词,并在该强调的地方都适时地强调出来。或许可以说是借鉴了XP(不是某公司的操作系统,是指“极限编程(eXtreme Programming)”)手法的“极限描述(eXtreme Writing)”写出来的书吧!呵,真是名不虚传!
相信本书能成为读者开启Ruby程序设计大门的第一本书。
Enjoy Programming!
松本行弘
写在前面——程序设计可以是“兴趣”
“狄!你会觉得那种东西有趣吗?”
“很有趣啊!如果狮子跟长颈鹿生在热带草原,就没有这种乐趣了!”
——三原顺《我坐下的地方》
与电脑程序相处的方式有两种:一种是“使用程序”;另一种则是“制作程序”。
但是,制作程序的人并不是那么多,大部分的人都只是使用程序。比例上或许和“阅读文章的人”与“写文章的人”很相似。虽然小说、散文、札记随笔的读者有很多,但自己在写小说、写随笔的人与读者相比,就少得多了。
但“文章”不限于商业出版作品。例如“自己的网页”该怎么算呢?有很多人每天更新自己的网页,里面可能写一些笑话取悦周围的朋友,或者提供有用的信息让人参考。虽然可能只是微不足道的东西,但既然有期待网页更新的读者,也就是“使用者”存在,也可以看做是“让人阅读的文章”吧。
制作这种网站的目的可能也五花八门。但无论如何,想必一定有相当多数的这些网页内容制作者,自己也觉得写这些东西很有趣。尤其是个人网站,通常就是为了满足自己的兴趣而制作的吧。
程序设计是否也相同呢?也就是说,不是只为了达成什么目的而写程序,而是因为就陶醉在写程序这件事本身上。
不过,除了程序的内容以外,相信使用什么程序语言也会在相当程度上左右快乐的感觉。是否有什么程序语言是适合拿来玩乐的呢?
——有。至少有一个,那就是Ruby。
* * *
Ruby是为了让程序设计更快乐而开发的程序语言。Ruby具有“彻底面向对象”、“丰富的程序库”、“亲和力高的直观语法形式”等多项特征,但这些特征并不是Ruby的目的。顶多只能说是为了让程序设计更有趣而开发的手段罢了。
在程序设计的世界里,直到现在已经有各式各样的程序语言出现并持续使用着。这些语言的开发往往有其目的,例如“写出能够高速运作的程序”、“可以在短时期内学会写程序”、“写一次到处运行”、“小朋友也能轻易写出程序”等。但是积极主张“让写程序更快乐”的程序语言,似乎就不太常见了。或许是没有人积极地去思考过“人人都来进行程序设计”这个议题吧。
当然,“让程序设计更快乐的程序语言”,一定要简单好用才行。因为麻烦的程序语言就很难让人感受到“快乐”了。同时,功能也要非常强大才行。使用无力的语言写程序是很辛苦的。所以不用说,Ruby是个用起来很简单又很强大的程序语言。
* * *
本书为了让那些完全没有程序设计经验的读者也能灵活地使用Ruby,因此书中详细地说明了各种知识。从程序所需要的变量、常数、方法、类、控制结构等语法的说明,到类的主要使用方法、简单的应用等,尽可能都浅显地加以解说。或许对完全没碰过电脑的读者还是有点吃力,但若您是自己动手玩过html这样的读者,应该就能充分活用本书的知识了。另外,若您不是初学者,但想要从头开始学习Ruby语言,这本书也会派上用场。
希望本书的读者,都能从使用Ruby的过程中,找到属于自己的“兴趣”与“乐趣”。——若您可以这样灵活运用,那将是是笔者无上的荣幸了。
欢迎光临Ruby的世界!
高桥征义|后藤裕藏
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">

前 言

编辑
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">

0.1 关于Ruby

在开始写程序之前,先来介绍一些Ruby的基础知识吧。
? Ruby是脚本语言
要执行C、Java这些程序语言所开发的程序,必须运行将程序的源码翻译成机器指令的“编译(Compile)”程序。“脚本语言”的“脚本(Script)”(译者注)这个词常常与“程序(Program)”一词混着用,但要注意的是,执行用脚本语言所写的程序时,一般来说都不需要经过编译动作。
Script译为指令码、脚本、描述、草稿等。也就是说,使用脚本语言的话,原本“写程序→编译→执行”的流程,可以简化成“写程序→执行”。所以比起需要编译的程序而言,写程序的步骤会轻松一些。
? Ruby是面向对象语言
Ruby是一个爱好面向对象的程序设计师某天发誓要设计出最完美的面向对象程序语言后所制造出来的产物。所有数据都一贯使用对象的形式表达,所以可以将自己的想法直接写进程序里。当然也具备了继承、Mix-in等各种面向对象的功能。
另外,Ruby除了具有各种标准程序库外,还加上了例外(Exception)的错误处理机制、自动释放内存的垃圾回收等各种让程序设计更舒服的机制。
? Ruby是跨平台的语言
Ruby在MacOS X、Linux、FreeBSD、Solaris、HP-UX等UNIX类操作系统,以及Windows环境等各种平台上都可以运作。大部分的Ruby脚本都不需要经过任何改写就可以在其他平台上直接执行。
? Ruby是开放源码软件
Ruby是松本行弘(Yukihiro Matsumoto/简称Matz)先生所开发的开放源码软件(自由软件),任何人都可以自由取得Ruby并使用它。自从Ruby在1995年公布于互联网上起,已经获得很多用户的支持,现在仍活跃地持续开发着。
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">

0.2 读者对象

本书是为有电脑操作知识,但没有程序设计经验的人而编写的Ruby程序设计入门书。虽然在执笔时已经尽可能力求不需要读者具备太多预备知识就能阅读,但“电脑的开机与关机”、“Shift键的用法”等,这些电脑基础知识还是省略掉了。本书所预计的读者大致如下:
? 对于文件操作、执行指令有基本的认识。
? 能够使用文字编辑器制作纯文本文件。
? 想要学会写程序。
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">

0.3 关于本书的结构

虽然本书各章已经排列成适合从头开始依序阅读,但对于有一点点Ruby经验的人来说,从头开始学习前面部分可能会感到烦闷。若您对Ruby的语法已经有初步的了解,可以直接跳过第一、二部分,直接从第三部分开始学习。
? 第一部分 开始使用Ruby
通过简单的Ruby程序来介绍程序的基本架构。
? 第二部分 学习基础
写Ruby程序时需要知道的基础语法规则,以及类、模块等面向对象程序设计的思考方法与用词。
? 第三部分 使用类
写程序时重要的不只是语法。使用Ruby之所以能够快乐地写程序,在相当程度上是因为它提供了设计精巧的标准程序库。
在这里就对一些基础类逐一介绍其功能与用法。
? 第四部分 灵活使用Ruby
为了能灵活使用Ruby,这里要介绍一些比较高级的功能。比如Ruby的环境参数、环境变量、迭代器的用法与做法、Mix-in等在第二、三部分没有提到的内容。
? 第五部分 制作应用
在这里作为整本书内容的综合,介绍比较复杂一点的程序范例。试着使用Ruby来写出比较实用的程序。
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">

? 附录

编辑
使用Ruby时所需的知识、相关的资讯等,都整理在附录里。也介绍了Ruby的mailing-list、网络上的各种资源与其用法。
安装Ruby的方法也写在这里,请在阅读本书之前先在您的电脑上构建好可以使用Ruby的环境吧。
0.4 执行环境
本书的程序码是在版本1.8.4的Ruby上开发的。笔者假设读者是在Windows XP/2000、MacOS X,以及一般的UNIX操作系统上执行的。关于Ruby的安装方法,请参见附录A中的“A.1 安装Ruby”。在开始阅读本书前,请配置好Ruby运行环境。
谢 辞
与很多图书的出版一样,本书在得到多方的协助后方得以出版。
对本书进行审校的松本行宏先生,给予(我)撰写本书机会的渡边哲也先生,因为本书原稿的延误而对其导致不便的软银(Softbank)创新会社的第一书籍编辑部的杉山聪先生、叶山响先生,对各种发布的Ruby指南做出贡献以及对各种文档进行整理准备的Ruby List ML的诸位,在RRA中发布各种程序和文档的作者们,对Ruby网站进行维护和运营的Webmaster们,在Ruby的各种ML中提供有益信息、活动话题的诸位,对作者本人多方照顾的加藤希女士,还有Ruby的创始人松本行宏先生以及很多的开发者们,在此致以衷心的谢意,非常地谢谢你们。
还有,在第2版中,双花社(Twin Spark)会社的程序员们对原稿进行了检查,故而在此也深表谢意。
" src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">

目 录

编辑
第1部分 开始使用Ruby
第1章 与Ruby的第一次接触 2
1.1 执行Ruby 2
1.1.1 Windows环境 3
1.1.2 UNIX环境 4
1.1.3 MacOS X环境 4
1.1.4 确认执行正常 5
1.2 程序的说明 5
1.2.1 对象 5
1.2.2 方法 5
1.3 字符串 6
1.3.1 换行字符与“\” 6
1.3.2 “‘‘”与“""” 6
1.4 调用方法 7
1.5 puts方法 7
1.6 p方法 8
1.7 显示中文 8
1.8 数值的显示与计算 9
1.8.1 显示数值 9
1.8.2 四则运算 10
1.8.3 数学函数 10
1.9 变量 11
1.10 写注释 12
1.11 控制结构 13
1.12 条件判断:if~then~end 14
1.13 字符串反复执行(循环) 15
1.13.1 while语句 15
1.13.2 times方法 15
1.14 定义方法 16
1.15 读入其他文件 16
第2章 方便的对象 18
2.1 数组 19
2.1.1 建立数组 19
2.1.2 从数组中取得对象 19
2.1.3 将对象存进数组里 20
2.1.4 数组的内容 20
2.1.5 数组的大小 21
2.1.6 逐项处理数组内容 21
2.2 杂凑(HASH) 22
2.2.1 建立杂凑 22
2.2.2 从杂凑获取对象 22
2.2.3 逐项处理杂凑内容 23
2.3 正则表达式 24
第3章 指令设计 27
3.1 从命令行输入的数据 27
3.2 读取文件 28
3.2.1 读入文件内的文本数据并显示 28
3.2.2 从文件逐行读入数据并显示出来 29
3.2.3 只显示文件里符合特定样式的几行 30
第2部分 学习基础
第4章 对象与变量、常数 34
4.1 对象 34
4.2 类 35
4.3 变量 35
4.4 常数 37
4.5 保留字 37
第5章 条件判断 42
5.1 什么是条件判断 42
5.2 Ruby的条件 43
5.2.1 条件与真假值 43
5.2.2 逻辑运算符 43
5.3 if语句 44
5.4 unless语句 46
5.5 case语句 47
5.6 if修饰符与unless修饰符 49
5.7 总结 50
第6章 循环 51
6.1 循环的基础 51
6.2 写循环时要注意的事情 51
6.3 实现循环的方式 52
6.4 times方法 52
6.5 for语句 53
6.6 一般的for语句 55
6.7 while语句 55
6.8 until语句 57
6.9 each方法 58
6.10 loop方法 59
6.11 循环的控制 59
6.11.1 break 60
6.11.2 next 61
6.11.3 redo 62
6.12 总结 63
第7章 方法 64
7.1 调用方法 64
7.2 方法的分类 64
7.2.1 实例方法 64
7.2.2 类方法 65
7.2.3 函数性的方法 65
7.3 定义方法 66
第8章 类与模块 68
8.1 什么是类 68
8.1.1 类与实例 68
8.1.2 继承 69
8.2 自己定义类 70
8.2.1 class语句 70
8.2.2 initialize方法 71
8.2.3 实例变量与实例方法 71
8.2.4 访问方法 72
8.2.5 类方法 73
8.2.6 常数 74
8.2.7 类变量 74
8.2.8 扩充类 74
8.2.9 使用继承 75
8.2.10 限制方法的调用 76
8.3 什么是面向对象 78
8.3.1 数据与处理程序 78
8.3.2 “数据与处理程序”方式的问题 79
8.3.3 对象 80
8.3.4 面向对象的特征 81
8.3.5 Duck Typing(行为决定类型) 82
8.4 什么是模块 83
8.5 自己定义模块 84
8.5.1 常数 85
8.5.2 定义方法 85
第9章 错误处理与例外 86
9.1 关于错误处理 86
9.2 例外处理 87
9.3 例外处理的写法 88
9.4 善后处理 90
9.5 重新执行 90
9.6 rescue修饰符 91
9.7 例外处理语法的补充 91
9.8 指定要捕捉的例外 92
9.9 例外类 92
9.10 引发例外 93
9.11 catch与throw 94
第3部分 使用类
第10章 数值(Numeric)类 96
10.1 Numeric的类架构 96
10.2 数值常数 97
10.3 算术运算 97
10.3.1 除法 98
10.3.2 Math模块 99
10.4 数值类型的转换 99
10.5 位运算 100
10.6 数数 102
练习 103
第11章 数组(Array)类 104
11.1 复习数组 104
11.2 建立数组 105
11.2.1 使用Array.new 105
11.2.2 使用%w 105
11.2.3 使用to_a方法 106
11.2.4 使用字符串的split方法 106
11.3 索引的用法 106
11.3.1 获取元素 106
11.3.2 改写元素 108
11.3.3 插入元素 109
11.3.4 以多个索引建立新数组 109
11.4 不使用索引操作数组 109
11.5 作为集合的数组 110
11.6 作为“列表”的数组 111
11.7 数组的主要方法 113
11.7.1 将数据加入数组中 113
11.7.2 从数组中删除数据 114
11.7.3 换掉数组的元素 115
11.8 数组与迭代器 117
11.9 处理数组的每个元素 117
11.9.1 使用循环配合索引 117
11.9.2 使用each方法逐项获取元素 118
11.9.3 使用破坏性的方法反复操作 118
11.9.4 使用其他迭代器 118
11.9.5 自己设计迭代器 118
11.10 数组的元素 119
11.10.1 示例:使用简单的矩阵 119
11.10.2 小心初始化 119
11.11 并行处理多个数组的值 120
练习 121
第12章 字符串(String)类 122
12.1 建立字符串 122
12.1.1 使用%Q、%q 123
12.1.2 使用嵌入文档 123
12.1.3 使用sprintf方法 124
12.2 获取字符串长度 125
12.3 分割字符串 126
12.4 连接字符串 127
12.5 字符串的索引 128
12.6 比较字符串 129
12.7 处理换行字符 131
12.8 字符串的查找与取代 131
12.8.1 查找字符串 132
12.8.2 字符串的取代 132
12.9 字符串与数组共同的方法 133
12.9.1 与索引操作有关的方法 133
12.9.2 Enumerable模块相关的方法 133
12.9.3 连接、逆转相关的方法 134
12.10 其他方法 134
练习 137
第13章 杂凑(Hash)类 139
13.1 杂凑的复习 139
13.2 建立杂凑的方法 140
13.2.1 使用{} 140
13.2.2 使用Hash.new 140
13.3 获取、设定杂凑的值 140
13.3.1 直接取出所有键或值 141
13.3.2 杂凑的默认值 141
13.4 查询杂凑里是否存在某个键或值 142
13.5 查询杂凑的大小 143
13.6 删除键与值 143
13.7 初始化杂凑 144
13.8 应用示例:计算单字数量 145
练习 147
第14章 正则表达式
第14章 (Regexp)类 148
14.1 关于正则表达式 148
14.1.1 正则表达式的写法与用途 148
14.1.2 建立正则表达式对象 149
14.2 正则表达式的样式与匹配 149
14.2.1 以一般文字进行匹配 149
14.2.2 匹配行首与行尾 150
14.2.3 指定想要匹配成功的文字范围 151
14.2.4 匹配任意字符 152
14.2.5 使用反斜线的样式 153
14.2.6 反复出现 154
14.2.7 最短匹配 156
14.2.8 “()”与反复 156
14.2.9 多选 157
14.3 使用quote方法的正则表达式 157
14.4 正则表达式的选项 157
14.5 回溯参照 159
14.6 使用正则表达式的方法 159
14.6.1 sub方法与gsub方法 160
14.6.2 scan方法 160
14.7 正则表达式的示例 161
练习 162
第15章 IO类 163
15.1 输入/输出的种类 163
15.1.1 标准输入/输出 163
15.1.2 文件输入/输出 165
15.1.3 open-uri.rb 166
15.1.4 stringio.rb 166
15.2 基本的输入/输出操作 167
15.2.1 输入操作 167
15.2.2 输出操作 169
15.3 文件指针 170
15.4 二进制模式与文本模式 171
15.5 缓冲处理 171
15.6 与指令交换数据 173
练习 174
第16章 File类与Dir类 175
16.1 File类 175
16.1.1 更改文件名 175
16.1.2 复制文件 176
16.1.3 删除文件 176
16.2 目录的操作 176
16.2.1 读取目录内容 177
16.2.2 Dir.glob 179
16.2.3 建立目录与删除 180
16.3 文件与目录的属性 180
16.3.1 获取属性 180
16.3.2 FileTest模块 182
16.4 文件名的操作 183
16.5 与文件操作相关的程序库 184
16.5.1 find.rb 184
16.5.2 tempfile.rb 185
16.5.3 fileutils.rb 185
练习 187
第17章 Time类与Date类 188
17.1 Time类、Date类、
17.1 DateTime类 188
17.2 获取Time对象 189
17.3 计算时间 189
17.4 时间的格式 189
17.5 本地时间 190
17.6 解析字符串 191
17.7 使用DateTime类 191
17.8 DateTime类与Time类的差异 192
17.8.1 DateTime类表示一天的方式 192
17.8.2 时差处理的差异 193
17.9 使用Date类求日期 194
17.10 计算日期 194
17.11 日期格式 195
17.12 解析字符串 195
练习 195
第4部分 灵活使用Ruby
第18章 Ruby的其他补充知识 198
18.1 命令行选项 198
18.1.1 调试、运行确认 198
18.1.2 获取信息 200
18.1.3 单行程序(one-liner) 200
18.1.4 安全性检查 201
18.1.5 其他 202
18.2 环境变量 203
18.3 常数 204
18.4 内建变量 204
18.5 内建常数 207
18.6 多重赋值 208
18.7 BEGIN{}与END{} 209
18.8 alias 209
18.9 undef 210
18.10 虚拟变量 210
第19章 运算符 211
19.1 逻辑运算符的应用 211
19.2 条件运算符 212
19.3 自我赋值 213
19.4 范围运算符 214
19.5 运算符的优先次序 214
19.6 定义运算符 215
19.6.1 二元运算符 215
19.6.2 单项运算符 216
19.6.3 数组参照运算符 216
第20章 迭代器(iterator) 219
20.1 迭代器与区块调用 219
20.2 迭代器的基础知识 219
20.3 各式各样的迭代器 221
20.3.1 用在数组上 221
20.3.2 用在杂凑上 221
20.3.3 用在文件上 222
20.4 Enumerable模块 223
20.4.1 each方法 223
20.4.2 collect方法 223
20.4.3 sort方法 223
20.4.4 sort_by方法 224
20.5 实现迭代器 225
第21章 Mix-in 231
21.1 include方法 231
21.2 Comparable模块 231
21.3 Enumerable模块 233
21.4 与继承的关系 236
21.5 方法的查找规则 236
第5部分 制作应用
第22章 日志文件解析 240
22.1 浅谈日志文件访问 240
22.2 查询访问数 241
22.3 查询访问日期 242
22.4 以图表显示访问日期 245
22.5 只统计特定文件的访问次数 246
第23章 查找邮政编码 247
23.1 邮政编码数据库 247
23.2 读文件 248
23.3 gdbm程序库 248
23.4 生成数据 249
23.5 查找数据 250
23.6 jzipcode.rb 251
23.7 执行与使用 251
23.8 总结 252
第24章 解析HTML 253
24.1 关于HTML 253
24.1.1 元素与标签 253
24.1.2 注释 254
24.1.3 字符引用 254
24.2 建立程序 255
24.2.1 注释的解析 255
24.2.2 标签的解析(一) 256
24.2.3 文字数据的解析 256
24.2.4 示例 256
24.2.5 标签的解析(二) 258
24.3 超链接一览 261

 

 

下载地址:网盘下载

 

以上是关于RubyProgramming:向Ruby之父学程序设计pdf的主要内容,如果未能解决你的问题,请参考以下文章

Ruby 之父:Ruby3 有望 3 倍提速,不添加类型推断

Ruby之父:How Emacs Changed My Life

一码学程 10284 排队找bug 题解 单调队列 或者 线段树RMQ

React之父组件向子组件传值

这一次,话筒给你:向自由软件之父斯托曼 提问啦!

这一次,话筒给你:向自由软件之父 Richard M. Stallman 提问啦!