本书为日本公认的最好的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
全面讲述React技术栈的第一本原创图书,purerender专栏主创倾力打造覆盖React、Flux、Redux及可视化,帮助开发者在实践中深入理解
苏萌北京大学光华管理学院市场营销系副教授、博士生导师、副系主任。毕业于美国康奈尔大学,获营销学博士学位。致力于营销模型、
编辑推荐为什么只因为客户将某个项目交给了设计师,后者就应该为相关信息大声吆喝呢?这种理由是站不住脚的。所以,倒还不如说,设
《网红经济思维模式》内容简介:如果你想赚钱,可以入驻电商平台,拥抱互联网。如果你想出名,可以开通自媒体,打通宣传路。如果你
《Internet与WWW程序设计教程》(第3版)以大量生动、实用的示例讲述了如何编写多层的、客户/服务器的、数据密集的、基于Web的应用
《敦煌南朝写本书法研究》内容简介:本书在对敦煌南朝写本进行整理的基础上,之分为题记为南朝写本和题记未注明为南朝写本、但有可
《锁相环:设计、仿真与应用》(第5版)(翻译版)第1章是简短的引言,介绍锁相环领域的情况。第2章安排涉及混合信号锁相环的理论,设
被咬过一口的苹果残缺低调但却难掩光芒无论是偏执狂还是是残忍的完美主义者无论是创新迷还是神一样的传奇都不重要他就是乔布斯不
人工智能知识讲座 本书特色 本书从人工智能的概念、发展历史、主要技术理论及应用等方面,全面讲解了人工智能的相关知识。全书分八章,分别介绍了人工智能的概念及相关术...
《运动与职场人生》内容简介:本教材不把提高学生运动技能作为首要指导思想,而是更加注重体育的文化因素,以知识性、趣味性和可读
本书以机器学习与计算统计为主题背景,专门讲述如何挖掘和分析Web上的数据和资源,如何分析用户体验、市场营销、个人品味等诸多信
bash是自由软件基金会发布的“BourneAgainShell”的缩写。它是流行的UNIXBourneshell的免费可用替代产品,供全球Linux用户选用。
多尺度图像融合理论与方法 本书特色 多尺度图像融合是图像融合中的一种主流技术,本书作者在多领域探讨了这种理论与方法的应用前景,值得关注。多尺度图像融合理论与方法...
《短视频社区:产品、运营与商业化》内容简介:本书从实战角度讲解短视频社区的产品架构、运营方案和商业变现的著作。作者是某头部
《汽车维修电工实战28天》内容简介:本书主要讲解汽车维修电工入门的相关知识及操作技能,内容包括汽车维修电工入门,汽车电源系统
《叶秀山全集·第八卷》内容简介:本选题分类结集叶秀山先生全部已经出版的专著,在学术期刊上发表的所有论文,以及部分笔记、札记
《一场美梦》内容简介:我在燃烧时从未想过醒来,我看着灰烬跳起舞,我看着意识变成流动的火光,我曾这样激烈而充满仪式感的存在过
《写给大家看的色彩书2:色彩怎么选,设计怎么做》内容简介:色彩不仅仅是感性思维的展示,也可以通过理性认知来发挥它。《写给大家
《吃食和文学》内容简介:本书收录了汪曾祺关于美食的经典散文集,包括家乡的食物、地方风味、家常小菜、民间特色美食等内容,无论
移动环境下高校图书馆用户情景敏感服务模式及平台开发 本书特色 管理科学与工程、情报学、信息管理、图书馆学以及教育管理等专业的高校师生,相关研究人员和科研管理者移...