ch01 Ruby 初探

1.1.1 ruby命令的执行方法

helloruby.rb (Ruby 文件)

1
print("Hello,Ruby.\n")

进入此文件被保存的文件夹目录,在 terminal 中执行

step0. cd rubylearning/ch01 (这里写你自己的文件夹路径)
step1. ruby helloruby.rb

1.1.2 irb 命令的执行方法

与ruby命令一样,irb命令在控制台执行,不过不需要指定程序文件。

step0. terminal 输入 irb
step1. 继续输入 print(“Hello,Ruby.\n”)

执行结果

在控制台写的程序可以马上在控制台里执行,这对进行简单的小测试非常方便。但是,这个方法并不适合大程序,这时我们应该考虑使用ruby命令。

退出 irb : 输入 exit 或 Ctrl+d

1.2 程序解说

字符串、数值、时间等各种数据,在Ruby中都是对象。

print是一个方法。所谓方法,就是对象的行为。
print方法的作用就是输出()里的内容。
我们在说明print方法时,会说“print方法会把作为参数传递过来的字符串,输出到控制台中”。

1.3 字符串

1.3.1

字符\n是换行符。利用换行符,我们可以用普通的字符达到换行的效果

除了\n以外,当我们想在字符串里嵌入特殊符号时,也会用到\
程序会对字符串里\后的字符做特殊处理。因此,如果字符串里需要包含\,程序要写成\

1
print("Hello, \"Ruby\".\n")

输出结果为:Hello, “Ruby!”.

1
print("Hello \\ Ruby!")

输出结果为:Hello \ Ruby!

1.3.2 ‘’ 与 “”

在单引号里,像\n这样的特殊字符不经过转义,程序会原封不动地直接输出。
但也有例外,例如在字符串里想嵌入\与单引号时,还是需要在之前加上\。也就是像这样,

1
print('Hello, \\ \'Ruby\'.')

输出结果为:Hello, \ ‘Ruby’.

1.4 方法的调用

Ruby在调用方法时可以省略(),

1
print "Hello, Ruby.\n"

虽然这种写法可以方便地输出多个字符串,但是如果遇到比较复杂的参数,使用()会更加便于理解。因此,建议在习惯Ruby的语法之前,不要使用省略()的写法

1.5 puts 方法

puts方法与print方法稍有区别,puts方法在输出结果的末尾一定会输出换行符。
如:

1
puts "Hello, Ruby."

不过,当参数为两个字符串时,各字符串末尾都会加上换行符,如

1
puts "Hello, ", "Ruby!"

1.6 p方法

把字符串 “100” 和 100 输出区别开来,如

使用p方法时,换行符(\n)、制表符(\t)等特殊字符不会转义,会直接输出。
(原则上,p方法是提供给编程者使用的。)

1.7 中文的输出

魔法注释:(从Ruby 2.0开始,若没指定魔法注释,Ruby会默认使用UTF-8编码方式,因此,在Ruby 2.0中如果希望代码采用UTF-8的编码方式时,可省略魔法注释。)

1
# encoding: GBK

以UTF-8编码方式在控制台输出结果,可像下面这样执行命令:

ruby -E UTF-8 脚本文件名 ← 脚本执行
irb -E UTF-8 ← irb启动

1.8 数值表示与计算

1.8.1 数值表示

Ruby中的字符串是以字符串对象的形式存在的。同样地,数值也是以“数值对象”的形式存在的。

四则运算:

1.8.2 数学相关的函数

Ruby中还可以使用数学函数,如平方根、sin和cos等三角函数、指数函数等。使用数学函数时,必须在函数前加上Math.标识。
(irb命令后的选项–simple-prompt会简化irb的输出结果。)

这个例子中,其结果值为“9.265358966049024 * 10的-5次幂”,也就是0.00009265358966049024。

1.9 变量

变量是程序里不可缺少的元素之一。可以将其理解为给对象贴上的标签。

变量还可以清晰地表示某个值所代表的含义。因此,为变量起一个容易理解的名称是非常重要的。建议大家平时多加注意,最好使用area、volume等意义明确的单词作为变量名。

传递给print方法的字符串参数也可以像下面这样写:

1
2
3
4
print "表面积 = #{area}\n"
# 或者
puts "表面积 = #{area}\n"

在字符串里使用#{…}这样的写法,可以把通过计算后得到的值嵌入到字符串中。输出结果里除了可以嵌入变量名,也可以嵌入”表面积 =#{(xy + yz + zx) 2}\n”这样的计算公式,得到的输出结果是一样的。

1.10 注释

我们在程序里可以写注释。注释虽然写在程序里面,但程序并不会执行注释的内容,也就是说,注释的内容对程序的执行结果不会产生任何影响。

Ruby 中用 # 表示(单行)注释的开始。
另外,行的开头用 =begin 和 =end 括起来的部分也是注释

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
=begin
《Ruby基础教程(第4版)》示例注释的使用示例
2006/06/16创建
2006/07/01追加一部分注释
2013/04/01第4版更新
x = 10 # 宽
y = 20 # 长
z = 30 # 高
# 计算表面积和体积
area = (x*y + y*z + z*x) * 2
volume = x * y * z
# 输出
print "表面积=", area, "\n"
print "体积=", volume, "\n"
=end

1.11 控制语句

控制语句大致可以分成以下几类。

  • 顺序控制:按照程序的编写顺序,从头到尾执行。
  • 条件控制:若某条件成立,则执行〇〇,否则执行××。
  • 循环控制:在某条件成立之前,反复执行〇〇。
  • 异常控制:发生某种异常时,执行〇〇。

1.12 条件判断:if~then~end

1
2
3
4
5
6
7
# (这里的条件一般指能返回 true 或者 false 的表达式)
# 这里的 then 也可以省略
if 条件 then
条件成立时执行的处理
else
条件不成立时执行的处理
end

1.13 循环

1.13.1 while语句

1
2
3
4
# do 可以省略
while 循环条件 do
希望循环做的处理
end

例子

1
2
3
4
5
6
# 按顺序输出从1到10十个数字
i = 1
while i <= 10
print i, "\n"
i = i + 1
end

1.13.2 times 方法

1
2
3
4
# 循环次数确定,使用 times 会更加简单
循环次数.times do
希望循环做的处理
end
1
2
3
100.times do
print "All work and no play makes Jack a dull boy.\n"
end

times 方法被称为迭代器 (iterator).迭代器就是指用于执行循环处理的方法。