R
R
R
U
U
U
B
B
B
Y
Y
Y
语
语
语
言
言
言
入
入
入
门
门
门
教
教
教
程
程
程
Version 1.0
编
编
著
著
张
张
开
开
川
川
开
k
k
a
a
i
i
c
c
h
h
u
u
a
a
n
n
_
_
z
z
h
h
a
a
n
n
g
g
@
@
1
1
2
2
6
6
.
.
c
c
o
o
m
m
开
开
开
源
源
源
文
文
文
档
档
档
开
开
开
源
源
源
文
文
文
档
档
档
开
开
开
源
源
源
文
文
文
档
档
档
开
开
开
开
文
开
源
源
源
文
文
文
档
档
档
开
开
开
源
源
源
文
文
文
档
档
档
开
开
源
源
源
文
文
文
档
档
档
开
开
开
源
源
源
文
文
文
档
档
档
开
开
开
源
源
源
文
开
开
源
文
文
档
源
源
文
档
档
开
文
文
档
档
档
开
开
开
源
源
源
文
文
文
档
档
档
开
开
开
源
源
源
文
文
档
档
档
开
开
开
源
源
源
文
文
文
档
档
档
开
开
源
源
开
源
文
开
源
文
源
文
档
源
文
档
文
档
文
档
档
档
开源文档:Ruby 语言入门教程 v1.0
第 1 页
目录
自序 ..................................................................................................................................................3
第一章 概述...................................................................................................................................4
1.1 编程语言的发展简史......................................................................................................4
1.2 编程其实很容易..............................................................................................................7
1.3 Ruby的由来.....................................................................................................................8
1.4 Ruby的特性.....................................................................................................................9
第二章 ............................................................................................................................................11
2.1 下载Ruby 1.8.5 ..............................................................................................................11
2.2 安装Ruby 1.8.5 for Windows ........................................................................................12
2.3 开始第一个小程序........................................................................................................14
2.4 Ruby语言的集成开发环境 ...........................................................................................17
第三章 语法快览.........................................................................................................................18
3.1 注释与分行....................................................................................................................18
3.2 分隔符............................................................................................................................20
3.3 关键字............................................................................................................................21
3.4 运算符............................................................................................................................23
3.5 标识名和变量的作用域................................................................................................25
3.6 类库................................................................................................................................26
3.7 数据类型........................................................................................................................27
3.8 赋值和条件运算符........................................................................................................28
3.9 条件判断语句................................................................................................................30
一. 单行 if(如果) 语句 ...........................................................................................30
二. 多行 if 语句 ...........................................................................................................30
三. unless(除非) 条件语句: ........................................................................................30
四. case分支条件语句....................................................................................................31
3.10 循环语句......................................................................................................................32
一. while(当…) 循环................................................................................................32
二. 单行 while 循环.....................................................................................................32
三. until(直到…) 循环 ...........................................................................................32
四. for…in 循环.............................................................................................................33
五.break , next & redo & retry....................................................................33
六. 求 50 以内的素数。................................................................................................36
七. times , upto , downto , each ,step ..............................................................................37
3.11 异常与线程..................................................................................................................38
3.12 一个综合小练习..........................................................................................................39
第四章 一切都是对象.................................................................................................................40
4.1 两种思维方式................................................................................................................40
4.2 对象................................................................................................................................41
4.3 封装................................................................................................................................43
开源文档:Ruby 语言入门教程 v1.0
第 2 页
4.4 继承................................................................................................................................45
4.5 多态................................................................................................................................47
第五章 ............................................................................................................................................48
5.1 为什么是Ruby?...........................................................................................................48
5.2 Ruby会长久么?...........................................................................................................49
5.3 详解变量—— 动态类型..............................................................................................51
5.4 蓝图可以改变吗? ——动态语言............................................................................55
5.5 一些编码建议.............................................................................................................57
第六章 深入面象对象...............................................................................................................61
6.1 重载?重写....................................................................................................................61
6.2 增强父类方法................................................................................................................65
6.3 实例变量、类变量、类方法........................................................................................67
6.4 单例方法........................................................................................................................71
6.5 访问控制........................................................................................................................73
第七章 ............................................................................................................................................79
7.1 模块................................................................................................................................79
7.2 命名空间........................................................................................................................80
7.3 糅和(Mix-in) 与多重继承............................................................................................83
7.4 require 和 load ..............................................................................................................86
第八章 ............................................................................................................................................88
8.1 再说数组........................................................................................................................88
8.2 再说字符串....................................................................................................................93
8.3 正则表达式....................................................................................................................97
8.4 迭代器、代码块、闭包..............................................................................................103
第九章 元编程.......................................................................................................................109
小跋 ..............................................................................................................................................112
开源文档:Ruby 语言入门教程 v1.0
第 3 页
自序
其它编程语言的学习都主要来自于书本,而 Ruby 的学习却是完全经由网络。
我想,回报网络的最好方式就是在网络上还没有 Ruby 中文书籍的时候,编著一本
Ruby 中文入门教材。感谢编程语言发展史上的前辈们;感谢网络论坛上程序员们
或是理智,或是激烈的讨论;感谢一切看到这本书的人。
曾经经受了 SCJP 的挖掘、挖掘、再挖掘(基于 1.4,还没有 Java 5,Java 6 的
许多特性),初遇 Ruby,觉得十分亲切,仿佛童年时得到一个新奇的玩具。把玩之
后,才发现玩具的塑料外壳里,藏着一把瑞士军刀。自此,模式、框架常常变得多
余,很多时候可以更直接。好比在量子时代,星际航行只是一次时空转换而已,航
天飞机静静地躺在博物馆里,那是旧时代科学的极致代表。
从物理课本中,我们感受到爱因斯坦的伟大,但对牛顿则怀以更加崇敬的心情。
身体终将消逝,而你,我,他——我们的意识却将在网络中延续。旧时代文明的延
续依赖于纸质书籍,书籍传递了理性之光。也许直觉才是这个宇宙本体的最初相用,
直觉是一种天赋,我无从把握,但是理性,如此真切实在,她照亮了我,照亮了你,
直至未来。
思,亘古如斯又倏忽闪现,谁的惊愕能深究它。
——海德格尔
张开川
2006年 12 月 31 日
开源文档:Ruby 语言入门教程 v1.0
第 4 页
第一章 概述
1.1 编程语言的发展简史
本小节是一些编程语言的简单介绍,你如果不感兴趣,可以略过不看。
先说程序是什么?程序就是指令序列的有序集合。指令即代码,可以是数字,
也可以是文字,文字最终要转换成数字。也就是说,程序是许多数字串,当然,也
可以合并成一个很长很长的数字串。
程序的作用是什么?程序能够做事,做你想叫它做的事。换一种说法,程序的
功能是完成它的使命。它的使命由编写程序的人来决定,或者由编写程序的程序来
决定。
编写程序就是写文章,写能够转换成很长很长数字串的文章,给计算机看。
最初的计算机编程语言是一长串二进制代码。所谓的二进制就是只有 1 和 0,
所以第一代的计算机编程语言就象下面的许多 1 和 0。
1001101001010011
0100011101111110
1010101000010100
11110100001010001
……
这是给计算机看的,你看不懂,我也看不懂,程序员自己下次再看的时候,也