Ruby学习札记(7)-Ruby中具有循环控制的方法和语句大归纳
Ruby语言与C/C++、Java、C#等语言,有很多独特之处,这篇文章简单介绍Ruby语言具有循环控制的多种方法和语句。至于哪些是方法和语句,参考下表,本文不再明确分开。
语句 | 方法 | |
times | ○ | |
for | ○ | |
while | ○ | |
until | ○ | |
each | ○ | |
loop | ○ |
(1)while语句
while 反复执行的条件 do
想要反复执行的动作
end
说明:do关键字可以省略,举个例子,如下
i = 1
while i <= 10
print(i, "\n")
i = i + 1
end
有点眼熟吧,只是少了{},多了end,继续看下去。
(2)times方法
反复次数.times {
想要反复的动作
}
说明:{…}可以与do…end互换。举个例子,如下
i = 1
10.times {
print(i, "\n")
i = i + 1
}
(3)each方法
数组.each {|变量|
想要反复执行的动作
}
举个较“奇怪”的例子,如下
#encoding: utf-8
arr = ["小林", 21, '女', 'A']
arr[5] = 163.30
print arr.size, " items\n"
arr.each { |info|
print info, ": "
p info
}
先看看运行结果吧,由于在CMD中会输出中文乱码,这个问题本人还未解决,即使是GBK也是乱码(希望有高手可以赐教),但是在Aptana Studio 3中是正常的,所以截个图在这里吧。
简单说明下:Ruby中数组声明用[],不用指明大小,而且大小可以自增,arr声明时只有4个元素,但是又在arr[5]中赋值,于是arr数组大小为6。这里arr[4]的值为nil,没有输出,这里输出了一个换行。
当然,each方法和前面的times方法,是Ruby中的迭代器,因此功能很多,这里只列举能有循环控制的方法,不具体讨论某个方法。
(4)for方法
形式1:
for 变量 in 开始的数值..结束的数值 do
想要重复执行的动作
end
说明:这里的“..”可不是省略号,也只有2个点,Ruby确实有些奇怪吧。举个例子,如下。
sum = 0
for i in 1..5
sum = sum + i
end
print sum, "\n"
这里do又被省略,想偷懒的话,有do出现就试着省略它,看行不行。
形式2:
for 变量 in 对象 do
想要重复进行的动作
end
说明:如果说前面的“开始的数值..结束的数值”也是这里的“对象”,也就是说形式1其实就是形式2,你会不会觉得Ruby实在太奇怪了,有点受不了吧L。前面的例子中1..5就是一个范围对象。举个遍历数组的例子吧,如下
names = ["awk", "Perl", "Python", "Ruby"]
for name in names
print name, "\n"
end
怎么样,觉得Ruby你可以接受她(或他)吗?不管怎样,我要继续做笔记下去。
(5)util语句
until 条件 do
想要重复执行的动作
end
说明:当条件为假时,就重复执行;与while的判断完全相反。举个前面while用过的例子,如下
i = 1
until i > 10
print(i, "\n")
i = i + 1
end
(6)loop方法
loop {
想要重复执行的动作
}
说明:如果loop里面没有跳出的语句(例如break),那么将是死循环。还是举个上面的例子,如下
i = 1
loop do
if i == 11
break
end
print(i, "\n")
i = i + 1
end
如果你发现{…}怎么换成do…end,那你一定没有看到(2)的说明,它们可以互换的。谢谢看到这里:)
好了,关于Ruby语言的循环控制就归纳到这里,如果有新发现,会继续补上。