循环
1. while 循环与 until 循环
语法1:
while conditional [do]
code
end
当 conditional 为真时执行 code
语法2:
code while condition
或者
begin
code
end while conditional
当 conditional 为真时,执行 code。
可以与 C 语言的 do…while
语句进行对比
#!/usr/bin/ruby #文件名为while.rb
$i = 0
$num = 3
puts "begin while"
while $i < $num do
puts("Inside the loop(while) i = #$i" )
$i +=1
end
puts "end while"
$i=0
puts "begin do while"
begin
puts("Inside the loop(do while) i = #$i" )
$i +=1
end while $i < $num
puts "end do while"
运行:
$ ruby while.rb
2. until 循环
语法1:
until conditional [do]
code
end
语法2:
code until conditional
或者:
begin
code
end until conditional
3. for、break 和 next 语句
for 范例1:
#!/usr/bin/ruby
for i in 0..5 #新建范围
puts "Value of local variable is #{i}"
end
for 范例2:
#!/usr/bin/ruby
(0..5).each do |i|
puts "Value of local variable is #{i}"
end
break 范例:
#!/usr/bin/ruby
for i in 0..5
if i > 2 then
break #退出循环
end
puts "Value of local variable is #{i}"
end
next 范例:
#!/usr/bin/ruby
for i in 0..5
if i < 2 then
next #跳转到下一次循环
end
puts "Value of local variable is #{i}"
end
4. redo 和 retry 语句
redo 范例:
#!/usr/bin/ruby #文件名为redo.rb
for i in 0..5
if i < 2 then
puts "Value of local variable is #{i}"
redo #重新开始最内部循环的该次迭代,不检查循环条件
end
end
运行结果将无限循环:
$ ruby redo.rb
如果 retry 出现在 begin 表达式的 rescue 子句中,则从 begin 主体的开头重新开始执行。
语法:
begin
do_something #抛出的异常
rescue
#处理错误
retry #重新从 begin 开始
end
如果 retry 出现在迭代内、块内或者 for 表达式的主体内,则重新开始迭代调用。迭代的参数会重新评估。
范例:
#!/usr/bin/ruby #文件名为retry.rb
n = 0
begin
puts 'Trying to do something'
raise 'oops' #抛出一个消息为"oops"的RuntimeError
rescue => ex #捕捉异常,并将异常保存至ex变量
puts ex #打印异常消息
n += 1
retry if n < 3
end
puts "Ok, I give up"
运行:
判断
1. if 语句
if 范例1:
#!/usr/bin/ruby #文件名为if1.rb
x=1
if x > 2
puts "x is greater than 2" #句1
elsif x <= 2 and x!=0
puts "x is 1" #句2
else
puts "I can't guess the number" #句3
end
如果 x>2 则执行句1,否则如果 x<=2 并且 x!=0 则执行句2,其他情况执行句3。
if 范例2:
#!/usr/bin/ruby #文件名为if2.rb
$debug=1
print "debug\n" if $debug #如果“if $debug”为真,则执行print “debug\n”
运行:
2. unless 语句
unless 范例1:
#!/usr/bin/ruby #文件名为unless.rb
x=1
unless x>2
puts "x is less than 2" #句1
else
puts "x is greater than 2" #句2
end
#如果x>2为假则执行句1,否则执行句2
与 if 语句相似,下面看范例2。
unless 范例2:
#!/usr/bin/ruby #文件名为unless2.rb
$var = 1 #不能写为ture
print "1 -- Value is set\n" if $var #复习if语句,并与unless语句对比
print "2 -- Value is set\n" unless $var #如果 $var为假,则执行print "2 -- Value is set\n"
$var = false #不能写成0
print "3 -- Value is set\n" unless $var
3. case 语句
范例:
#!/usr/bin/ruby #文件名为case.rb
$age = 56
case $age #比较指定的age
when 0 .. 2 #与0,1,2三个数字进行比较
puts "baby" #若匹配,则执行此句
when 3 .. 6
puts "little child"
when 7 .. 12
puts "child"
when 13 .. 18
puts "youth"
else #若以上均不匹配
puts "adult" #则执行此句
end #不要忘了case…end
运行:
$ ruby case.rb
adult