内容简介:
本书为日本公认的最好的Ruby入门教程。松本行弘亲自审校并作序推荐。本书支持最新的Ruby 2.0,也附带讲解了可运行于1.9版本的代码,事无巨细且通俗易懂地讲解了编写程序时所需要的变量、常量、方法、类、流程控制等的语法,以及主要类的使用方法和简单的应用,让没有编程经验的读者也能轻松掌握Ruby,找到属于自己的快乐编程方式,做到融会贯通并灵活运用到实际工作中。
本书适合Ruby初学者学习参考,有一定Ruby编程基础的读者若想再回顾一下Ruby的各知识点,本书也能提供不少帮助。
作者简介:
作者简介:
高桥征义(Masayoshi Takahashi)
日本Ruby协会创始人兼会长。日本著名的IT书籍电子书平台达人出版会董事长。著有《Ruby基础教程》《Rails3绝技190招》等。喜欢的作家是新井素子。
后藤裕藏(Yuuzou Gotou)
日本网络应用通信研究所董事。喜欢平克・弗洛伊德乐队。
松本行弘(Yukihiro Matsumoto)
Ruby语言发明者,亦是亚洲首屈一指的编程语言发明者。现兼任网络应用通信研究所(NaCl)研究员、乐天技术研究所研究员、Heroku首席架构师等。昵称“Matz”。讨厌东京,喜欢温泉。
译者简介:
何文斯
上海交通大学电子工程系研究生毕业,现就职于某国际独立软件开发商,从事软件售后支持工作。对面向对象的程序设计,脚本语言及其在语音、图像等信号处理中的应用有着浓厚的兴趣。
目录:
第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
文章试读:Ruby 的类(class)表示的就是对象的种类。 对象拥有什么特性等,这些都是由类来决定的。到目前为止,我们介绍过的对象与其所属类 的对应关系如表 4.1 所示。 表 4.1 对象与类的对象表 备注 “×× 类的对象”,我们一般也会说成“×× 类的实例(Instance)”。所有 Ruby 对象其实都是某个类 的实例,因此在 Ruby 中的对象和实例的意义几乎是一样的。...
(查看全部试读)