本书为日本公认的最好的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
云计算-(第三版) 本书特色 本书是国内销量*大、被众多高校采用的教材《云计算》的*新升级版,是中国云计算专家咨询委员会秘书长刘鹏教授团队的心血之作。在应对大数...
《华为的意志:华为经营逻辑的引擎》内容简介:一个企业活下去并非容易之事,企业要始终健康地活下去更难。因为它每时每刻都面对激
《方汉奇文集(增订版)》内容简介:《方汉奇文集》(增订版)收录了方先生半个多世纪的研究成果和心得,史料丰富、考据严谨、笔法
《宋元笔记述要》内容简介:本书为关于宋元笔记的提要类著作,举凡五代一种,宋代一百四十种,元代十五种,宋元笔记之要者基本被囊
《gRPC与云原生应用开发:以Go和Java为例》内容简介:本书全面介绍了gRPC,可作为终极指南,用于gRPC应用程序开发周期的各个阶段。
《温莎墓园日记》内容简介:“有人抑制不住惊叹,难道爱情真是,真是可能的吗……”木心散文小说系列之《温莎墓园日记》,经过年近
Scratch少儿趣味编程 本书特色 scratch是麻省理工学院设计开发的一款编程工具,是适合少儿学习编程和交流的工具和平台,有中文版且完全免费。《scrat...
《澳大利亚印太战略研究》内容简介:澳大利亚的印太战略是一项集政治、经济和防务于一体的综合战略,其战略关注经历了东南亚、亚洲
《基于浏览器的深度学习》内容简介:本书是Web开发和深度学习的跨界,主要介绍基于浏览器的深度学习技术,具体内容包括神经网络架构
本书是《QBasic语言程序设计教程》(第二版)一书的配套教材、本书第一部分以概要的形式,对全书进行了总结,以便学生复习。在第
Almosteveryanimalwillatsometimeorotherbecomethehomeofaparasite.Notonlyareparasit...
《嵌入式Linux系统开发》内容简介:通过本书,你将会学习OpenEmbedded构建系统如何工作、如何编写菜谱来构建你自己的软件组件、如何
《黑客大曝光:恶意软件和Rootkit安全(原书第2版)》内容简介:《黑客大曝光:恶意软件和Rootkit安全(原书第2版)》提供了经过证
《美国玩全攻略(图文全彩版)》内容简介:本书为一本美国玩全攻略旅游达人宝典,共分为10章,内容包括玩转美国准备、华盛顿特区玩
主板维修技能实训 本书特色 《主板维修技能实训(附光盘)》由专业维修工程师王红军根据多年实践经验精心编写,重点讲解了电脑主板的结构、原理及故障维修诊断方法,主要...
《经典剪发专业技术图解:短发(视频教学版)》内容简介:《经典剪发专业技术图解:短发》是专门针对段发剪发技术的详细图解教程,
《夏天最后一朵玫瑰》内容简介:本书是为初中至高中年龄的青少年精选的外国经典诗歌,均出自各国文学大师或大诗人之手,译者也是我
《中国资本市场研究报告(2019)》内容简介:本研究报告是中国人民大学金融与证券研究所(Finance and Securities,FSI)所长吴晓求
《我为什么自己的书一本没写》内容简介:一本挑战悖论的不可能之书。乌力波文学经典。法国黑色幽默文学大奖获奖作品。幽默解剖写作
本书系统地介绍了数据通信和计算机网络领域的基本内容。在第一版的基础上,修改和增加了新的内容,包括无线和卫星通信、有线电视