本书为日本公认的最好的Ruby入门教程。松本行弘亲自审校并作序推荐。本书支持最新的Ruby 2.0,也附带讲解了可运行于1.9版本的代码,事无巨细且通俗易懂地讲解了编写程序时所需要的变量、常量、方法、类、流程控制等的语法,以及主要类的使用方法和简单的应用,让没有编程经验的读者也能轻松掌握Ruby,找到属于自己的快乐编程方式,做到融会贯通并灵活运用到实际工作中。
本书适合Ruby初学者学习参考,有一定Ruby编程基础的读者若想再回顾一下Ruby的各知识点,本书也能提供不少帮助。
第1部分 Ruby初体验
第1章 Ruby初探2
1.1 Ruby的运行方法3
1.1.1 ruby命令的执行方法3
1.1.2 irb命令的执行方法4
1.2 程序解说5
1.2.1 对象5
1.2.2 方法5
1.3 字符串6
1.3.1 换行符与6
1.3.2 ' '与" "7
1.4 方法的调用7
1.5 puts方法8
1.6 p方法8
1.7 中文的输出9
1.8 数值表示与计算11
1.8.1 数值11
1.8.2 四则运算11
1.8.3 数学相关的函数12
1.9 变量13
print方法和变量14
1.10 注释14
1.11 控制语句15
print方法和变量16
1.12 条件判断:if~then~end16
1.13 循环18
1.13.1 while语句18
1.13.2 times方法18
第2章 便利的对象19
2.1 数组20
2.1.1 数组的创建20
2.1.2 数组对象20
2.1.3 从数组中抽取对象20
2.1.4 将对象保存到数组中21
2.1.5 数组的元素22
2.1.6 数组的大小22
2.1.7 数组的循环23
2.2 散列24
2.2.1 什么是符号24
2.2.2 散列的创建25
2.2.3 散列的使用25
2.2.4 散列的循环25
2.3 正则表达式26
模式与匹配26
第3章 创建命令29
3.1 命令行的输入数据29
3.2 文件的读取30
3.2.1 从文件中读取内容并输出31
3.2.2 从文件中逐行读取内容并输出32
3.2.3 从文件中读取指定模式的内容并输出33
3.3 方法的定义34
3.4 其他文件的引用34
第2部分 Ruby的基础
第4章 对象、变量和常量38
4.1 对象38
4.2 类39
4.3 变量39
局部变量与全局变量40
4.4 常量42
4.5 保留字42
4.6 多重赋值43
4.6.1 合并执行多个赋值操作43
4.6.2 置换变量的值43
4.6.3 获取数组的元素44
4.6.4 获取嵌套数组的元素44
第5章 条件判断46
5.1 什么是条件判断46
5.2 Ruby中的条件47
条件与真假值47
5.3 逻辑运算符48
5.4 if语句49
5.5 unless语句50
5.6 case语句51
5.7 if修饰符与unless修饰符54
5.8 总结54
第6章 循环57
6.1 循环的基础57
6.2 循环时的注意事项58
6.3 实现循环的方法58
6.4 times方法58
6.5 for语句60
6.6 普通的for语句62
6.7 while语句62
6.8 until语句64
6.9 each方法65
6.10 loop方法66
6.11 循环控制66
6.11.1 break68
6.11.2 next69
6.11.3 redo70
6.12 总结71
第7章 方法73
7.1 方法的调用73
7.1.1 简单的方法调用73
7.1.2 带块的方法调用74
7.1.3 运算符形式的方法调用74
7.2 方法的分类75
7.2.1 实例方法75
7.2.2 类方法76
7.2.3 函数式方法76
7.3 方法的定义77
7.3.1 方法的返回值78
7.3.2 定义带块的方法79
7.3.3 参数个数不确定的方法80
7.3.4 关键字参数81
7.3.5 关于方法调用的一些补充82
第8章 类和模块87
8.1 类是什么87
8.1.1 类和实例87
8.1.2 继承89
8.2 类的创建90
8.2.1 class关键字91
8.2.2 initialize方法91
8.2.3 实例变量与实例方法92
8.2.4 存取器93
8.2.5 特殊变量self94
8.2.6 类方法95
8.2.7 常量96
8.2.8 类变量96
8.2.9 限制方法的调用97
8.3 扩展类99
8.3.1 在原有类的基础上添加方法99
8.3.2 继承99
8.4 alias与undef101
8.4.1 alias101
8.4.2 undef102
8.5 模块是什么103
8.6 模块的使用方法103
8.6.1 提供命名空间103
8.6.2 利用Mix-in扩展功能104
8.7 创建模块104
8.7.1 常量105
8.7.2 方法的定义105
8.8 Mix-in106
8.8.1 查找方法的规则107
8.8.2 extend方法109
8.8.3 类与Mix-in110
8.9 面向对象程序设计111
8.9.1 对象是什么111
8.9.2 面向对象的特征112
8.9.3 鸭子类型113
8.9.4 面向对象的例子114
第9章 运算符117
9.1 赋值运算符117
9.2 逻辑运算符的应用118
9.3 条件运算符120
9.4 范围运算符120
9.5 运算符的优先级121
9.6 定义运算符122
9.6.1 二元运算符122
9.6.2 一元运算符124
9.6.3 下标方法125
第10章 错误处理与异常126
10.1 关于错误处理126
10.2 异常处理127
10.3 异常处理的写法128
10.4 后处理131
10.5 重试131
10.6 rescue修饰符132
10.7 异常处理语法的补充132
10.8 指定需要捕捉的异常133
10.9 异常类134
10.10 主动抛出异常135
第11章 块136
11.1 块是什么136
11.2 块的使用方法137
11.2.1 循环137
11.2.2 隐藏常规处理138
11.2.3 替换部分算法139
11.3 定义带块的方法142
11.3.1 执行块142
11.3.2 传递块参数,获取块的值142
11.3.3 控制块的执行144
11.3.4 将块封装为对象145
11.4 局部变量与块变量147
第3部分 Ruby的类
第12章 数值类150
12.1 数值类的构成150
12.2 数值的字面量152
12.3 算数运算153
除法153
12.4 Math模块155
12.5 数值类型转换156
12.6 位运算157
12.7 随机数159
12.8 计数160
12.9 近似值误差161
第13章 数组类164
13.1 复习数组165
13.2 数组的创建方法165
13.2.1 使用Array.new165
13.2.2 使用%w与%i166
13.2.3 使用to_a方法166
13.2.4 使用字符串的split方法166
13.3 索引的使用方法167
13.3.1 获取元素167
13.3.2 元素赋值169
13.3.3 插入元素170
13.3.4 通过多个索引创建数组171
13.4 作为集合的数组171
“|”与“+”的不同点173
13.5 作为列的数组173
13.6 主要的数组方法175
13.6.1 为数组添加元素175
13.6.2 从数组中删除元素177
13.6.3 替换数组元素179
13.7 数组与迭代器180
13.8 处理数组中的元素181
13.8.1 使用循环与索引181
13.8.2 使用each方法逐个获取元素181
13.8.3 使用具有破坏性的方法实现循环182
13.8.4 使用其他迭代器182
13.8.5 创建专用的迭代器182
13.9 数组的元素183
13.9.1 使用简单的矩阵183
13.9.2 初始化时的注意事项183
13.10 同时访问多个数组185
第14章 字符串类188
14.1 字符串的创建189
14.1.1 使用%Q与%q190
14.1.2 使用Here Document190
14.1.3 使用sprintf方法191
14.1.4 使用``191
14.2 获取字符串的长度193
14.3 字符串的索引194
14.4 字符串的连接194
14.5 字符串的比较195
字符串的大小比较196
14.6 字符串的分割198
14.7 换行符的使用方法198
14.8 字符串的检索与置换199
14.8.1 字符串的检索199
14.8.2 字符串的置换200
14.9 字符串与数组的共同方法200
14.9.1 与索引操作相关的方法200
14.9.2 返回Enumerator对象的方法201
14.9.3 与连接、反转(reverse)相关的方法202
14.10 其他方法203
14.11 日语字符编码的转换204
14.11.1 encode方法204
14.11.2 nkf库204
第15章 散列类208
15.1 复习散列208
15.2 散列的创建209
15.2.1 使用{}209
15.2.2 使用Hash.new209
15.3 值的获取与设定210
15.3.1 一次性获取所有的键、值211
15.3.2 散列的默认值211
15.4 查看指定对象是否为散列的键或值212
15.5 查看散列的大小213
15.6 删除键值213
15.7 初始化散列214
处理有两个键的散列215
15.8 应用示例:计算单词数量216
第16章 正则表达式类219
16.1 关于正则表达式219
16.1.1 正则表达式的写法与用法219
16.1.2 正则表达式对象的创建方法220
16.2 正则表达式的模式与匹配220
16.2.1 匹配普通字符221
16.2.2 匹配行首与行尾221
16.2.3 指定匹配字符的范围222
16.2.4 匹配任意字符224
16.2.5 使用反斜杠的模式225
16.2.6 重复226
16.2.7 最短匹配228
16.2.8 ()与重复229
16.2.9 选择229
16.3 使用quote方法的正则表达式229
16.4 正则表达式的选项230
16.5 捕获231
16.6 使用正则表达式的方法232
16.6.1 sub方法与gsub方法232
16.6.2 scan方法233
16.7 正则表达式的例子234
第17章 IO类237
17.1 输入/输出的种类237
17.1.1 标准输入/输出237
17.1.2 文件输入/输出239
17.2 基本的输入/输出操作240
17.2.1 输入操作240
17.2.2 输出操作243
17.3 文件指针244
17.4 二进制模式与文本模式245
17.5 缓冲246
17.6 与命令进行交互248
17.7 open-uri库249
17.8 stringio库250
第18章 File类与Dir类252
18.1 File类252
18.1.1 变更文件名253
18.1.2 复制文件253
18.1.3 删除文件254
18.2 目录的操作254
18.2.1 目录内容的读取255
18.2.2 目录的创建与删除258
18.3 文件与目录的属性259
FileTest模块261
18.4 文件名的操作262
18.5 与操作文件相关的库263
18.5.1 find库263
18.5.2 tempfile库264
18.5.3 fileutils库265
第19章 Encoding类268
19.1 Ruby的编码与字符串268
19.2 脚本编码与魔法注释269
19.3 Encoding类270
Encoding类的方法271
19.4 正则表达式与编码274
19.5 IO类与编码274
19.5.1 外部编码与内部编码274
19.5.2 编码的设定275
19.5.3 编码的作用276
第20章 Time类与Date类280
20.1 Time类与Date类280
20.2 时间的获取281
20.3 时间的计算282
20.4 时间的格式282
20.5 本地时间284
20.6 从字符串中获取时间284
20.7 日期的获取285
20.8 日期的运算286
20.9 日期的格式286
20.10 从字符串中获取日期287
第21章 Proc类288
21.1 Proc类是什么288
21.1.1 lambda289
21.1.2 通过Proc参数接收块291
21.1.3 to_proc方法292
21.2 Proc的特征292
21.3 Proc类的实例方法293
第4部分 动手制作工具
第22章 文本处理298
22.1 准备文本298
22.1.1 下载文件298
22.1.2 获取正文299
22.1.3 删除标签300
22.2 扩展simple_grep.rb:显示次数302
计算匹配行302
22.3 扩展simple_grep.rb:显示匹配的部分304
22.3.1 突出匹配到的位置304
22.3.2 显示前后各10个字符305
22.3.3 让前后的字符数可变更306
第23章 检索邮政编码308
23.1 获取邮政编码308
23.2 检索邮政编码309
23.3 sqlite3库309
23.4 插入数据311
23.5 检索数据313
23.6 总结314
附录
附录A Ruby运行环境的构建316
A.1 Ruby的安装316
A.2 在Windows下安装316
A.2.1 开始安装317
A.2.2 同意软件使用许可协议317
A.2.3 确认安装路径以及选项317
A.2.4 安装进度318
A.2.5 安装完成318
A.2.6 启动控制台319
A.3 在Mac OS X下安装320
通过MacPorts安装321
A.4 在Unix下安装322
A.4.1 从源代码编译322
A.4.2 使用二进制软件包323
A.4.3 使用Ruby软件包管理工具323
A.5 编辑器与IDE323
没有好用的编辑器就不能编写Ruby程序吗324
附录B Ruby参考集325
B.1 RubyGems325
gem命令325
B.2 Ruby参考手册327
B.2.1 Web上的资源327
B.2.2 ri命令328
B.2.3 阅读参考手册的技巧328
B.3 命令行选项329
B.4 预定义变量、常量330
B.4.1 预定义变量330
B.4.2 预定义常量331
B.4.3 伪变量332
B.4.4 环境变量332
B.5 错误信息332
B.5.1 syntax error333
B.5.2 NameError/NoMethodError333
B.5.3 ArgumentError333
B.5.4 TypeError334
B.5.5 LoadError334
B.5.6 [BUG]334
后记 335
谢辞 336
《读书,应该这样读:中学生语文阅读方法指导》内容简介:本书详细论述了语文阅读的方法和技巧,一共包括五个部分:第一部分着重论
数据库系统工程师考试大纲 本书特色 数据库系统工程师是计算机技术与软件专业技术资格(水平)考试“信息系统”类的中级资格,于2020年审定通过并于2021年使用。...
《内容电商运营》内容简介:如今,越来越多的人投身到内容电商运营工作中,并取得了可喜的成绩,如“罗辑思维”“凯叔讲故事”“小
高性能集群计算:编程与应用 第二卷 内容简介 本书全面系统地介绍了高性能集群计算技术的概念、理论研究和工程实践成果。全书由两卷构成:系统与结构(**卷)和编程与...
新手程序员在具备了理论基础后,面对实际项目时,往往不知道如何解决问题;有经验的程序员在学习了一门新语言后,也会有很多不知
《大学的改革(第五卷·学子篇·研究生)》内容简介:1. 经管学院院长倾力打造,与国际接轨的本土教育圣典;所有家长之枕边书,所以
《C++新经典》内容简介:本书是一部C/C++编程语言书,定位在C/C++语言本身的讲解上面。本书包含纸质图书以及教学源代码文件。本书共
本书主要包括两方面内容,首先是对工业设计发展的简要历史的回顾,从中读者可以理解工业国家的技术发展过程的经验和教训。然后探
适合人群:设计爱好者、UI初学者、互联网行业从业人员。《界与面一本写给青春设计师的书(全彩)》是一本设计文化类图书,为即将
《数字与模拟通信系统》(第7版)在前六版的基础上改编而成,系统地介绍了现代通信系统的基本理论和最新发展技术。全书共分8章,内
本书是清朝康熙皇帝在万几之暇所作的一本笔记,内容主要是对天文、地理、古生物、动物、植物、医药、哲学等科学文化现象的调查、
《LinuxUnix设计思想/图灵程序设计丛书》内容简介:将Linux的开发方式与Unix的原理有效地结合起来,总结出Linux与Unix软件开发中
《走向大洋:前苏联冷战时期远洋水面作战舰艇》内容简介:前苏联远洋水面舰艇发展道路曲折而坎坷,但是在此过程中,一个陆权国家走
《一本书读懂物联网(第2版)》内容简介:本书的创新加强之处在于:一是更加实用,把物联网的基础知识、背景趋势、基本框架、体系组
字体设计是最直接、最迅速的信息呈现形式之一。本书汇集大量国内外优秀字体设计作品,以“理论文字+作品分析+作品欣赏+问题分析”
微型计算机系统原理及应用[第5版] 内容简介 本书是《微型计算机系统原理及应用》的第五版。本版本根据微处理器的*新发展,从80x86系列微处理器整体着眼,落实到...
《OpenShift在企业中的实践(第2版)》内容简介:本书以红帽OpenShift v4为核心编写,从客户的数字化转型入手,介绍如何通过OpenSh
《JavaScript捷径教程》讲述了JavaScript以及DOM的应用。重点讲解了JavaScript库,并通过实际的示例说明了如何把这些库应用于你的
深入浅出数据分析 本书特色 我们生活在数据的天地里,你的工作就是淋漓尽致地发挥数据的作用。从哪里起步?米尔顿编著的《深入浅出数据分析》将为你提供帮助:利...
《跟老男孩学Linux运维:核心基础篇(上)》内容简介:本书是一本以企业Linux运维需要的知识为基础的实战型教学图书,书的内容并非