详解Ruby中的循环语句的用法

首页 > 脚本专栏 > ruby专题 更新日期: 2016-02-18
这篇文章主要介绍了详解Ruby中的循环语句的用法,Ruby中的循环语句与其他编程语言的相比之下显得有所不同,需要的朋友可以参考下

Ruby 中的循环用于执行相同的代码块若干次。本章节将详细介绍 Ruby 支持的所有循环语句。
Ruby while 语句
语法

while conditional [do]
  code
end

当 conditional 为真时,执行 code。while 循环的 conditional 通过保留字 do、一个换行符、反斜线 \ 或一个分号 ; ,来与 code 分离开。
实例

#!/usr/bin/ruby
 
$i = 0
$num = 5
 
while $i < $num do
  puts("Inside the loop i = #$i" )
  $i +=1
end

这将产生以下结果:

Inside the loop i = 0
Inside the loop i = 1
Inside the loop i = 2
Inside the loop i = 3
Inside the loop i = 4

Ruby while 修饰符
语法

code while condition
 
OR
 
begin
 code
end while conditional

当 conditional 为真时,执行 code。

如果 while 修饰符跟在一个没有 rescue 或 ensure 子句的 begin 语句后面,code 会在 conditional 判断之前执行一次。
实例

#!/usr/bin/ruby
 
$i = 0
$num = 5
begin
  puts("Inside the loop i = #$i" )
  $i +=1
end while $i < $num

这将产生以下结果:

Inside the loop i = 0
Inside the loop i = 1
Inside the loop i = 2
Inside the loop i = 3
Inside the loop i = 4
Ruby until 语句
until conditional [do]
  code
end

当 conditional 为假时,执行 code。until 语句的 conditional 通过保留字 do、一个换行符或一个分号,来与 code 分离开。
实例

#!/usr/bin/ruby
 
$i = 0
$num = 5
 
until $i > $num do
  puts("Inside the loop i = #$i" )
  $i +=1;
end

这将产生以下结果:

Inside the loop i = 0
Inside the loop i = 1
Inside the loop i = 2
Inside the loop i = 3
Inside the loop i = 4
Inside the loop i = 5
Ruby until 修饰符
语法
code until conditional
 
OR
 
begin
  code
end until conditional

当 conditional 为假时,执行 code。

如果 until 修饰符跟在一个没有 rescue 或 ensure 子句的 begin 语句后面,code 会在 conditional 判断之前执行一次。
实例

#!/usr/bin/ruby
 
$i = 0
$num = 5
begin
  puts("Inside the loop i = #$i" )
  $i +=1;
end until $i > $num

这将产生以下结果:

Inside the loop i = 0
Inside the loop i = 1
Inside the loop i = 2
Inside the loop i = 3
Inside the loop i = 4
Inside the loop i = 5

Ruby for 语句
语法

for variable [, variable ...] in expression [do]
  code
end


针对 expression 中的每个元素分别执行一次 code。
实例

#!/usr/bin/ruby
 
for i in 0..5
  puts "Value of local variable is #{i}"
end

在这里,我们已经定义了范围 0..5。语句 for i in 0..5 允许 i 的值从 0 到 5(包含 5)。这将产生以下结果:

Value of local variable is 0
Value of local variable is 1
Value of local variable is 2
Value of local variable is 3
Value of local variable is 4
Value of local variable is 5

for...in 循环几乎是完全等价于:
(expression).each do |variable[, variable...]| code end

但是,for 循环不会为局部变量创建一个新的作用域。for 循环的 expression 通过保留字 do、一个换行符或一个分号,来与 code 分离开。.
实例

#!/usr/bin/ruby
 
(0..5).each do |i|
  puts "Value of local variable is #{i}"
end

这将产生以下结果:

Value of local variable is 0
Value of local variable is 1
Value of local variable is 2
Value of local variable is 3
Value of local variable is 4
Value of local variable is 5

Ruby break 语句
语法
break

终止最内部的循环。如果在块内调用,则终止相关块的方法(方法返回 nil)。
实例

#!/usr/bin/ruby
 
for i in 0..5
  if i > 2 then
   break
  end
  puts "Value of local variable is #{i}"
end

这将产生以下结果:

Value of local variable is 0
Value of local variable is 1
Value of local variable is 2

Ruby next 语句
语法
next

跳到最内部循环的下一个迭代。如果在块内调用,则终止块的执行(yield 或调用返回 nil)。
实例

#!/usr/bin/ruby
 
for i in 0..5
  if i < 2 then
   next
  end
  puts "Value of local variable is #{i}"
end

这将产生以下结果:

Value of local variable is 2
Value of local variable is 3
Value of local variable is 4
Value of local variable is 5

Ruby redo 语句
语法
redo

重新开始最内部循环的该次迭代,不检查循环条件。如果在块内调用,则重新开始 yield 或 call。
实例

#!/usr/bin/ruby
 
for i in 0..5
  if i < 2 then
   puts "Value of local variable is #{i}"
   redo
  end
end

这将产生以下结果,并会进入一个无限循环:

Value of local variable is 0
Value of local variable is 0
............................

Ruby retry 语句
语法
retry

如果 retry 出现在 begin 表达式的 rescue 子句中,则从 begin 主体的开头重新开始。

begin
  do_something # 抛出的异常
rescue
  # 处理错误
  retry # 重新从 begin 开始
end

如果 retry 出现在迭代内、块内或者 for 表达式的主体内,则重新开始迭代调用。迭代的参数会重新评估。

for i in 1..5
  retry if some_condition # 重新从 i == 1 开始
end

实例

#!/usr/bin/ruby
 
for i in 1..5
  retry if i > 2
  puts "Value of local variable is #{i}"
end

这将产生以下结果,并会进入一个无限循环:

Value of local variable is 1
Value of local variable is 2
Value of local variable is 1
Value of local variable is 2
Value of local variable is 1
Value of local variable is 2
............................

> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!

相关文章
  • 详解Ruby中范围的概念
    这篇文章主要介绍了详解Ruby中范围的概念,需要的朋友可以参考下 范围无处不在:1月至12月,0至9日,50至67行,依此类推. Ruby支持范围,并允许我们使用多种方式的范围:     作为序列范围     作为条件范围     作为区间范围 作为序列范围: 首先,也许是最自然的使用范围来表达序列.序列有一个起点,一个终点和序列中的连续值的方法来生产. R ...
  • 详解Ruby中的块的知识
    这篇文章主要介绍了详解Ruby中的块的知识,包括yield语句和begin/end块等知识点,需要的朋友可以参考下 语法: block_name{ statement1 statement2 .......... } 在这里,将学习如何通过使用一个简单的 yield 语句调用块.还将学习使用yield语句具有参数调用块.将检查的示例代码,这两种类型的 yie ...
  • ruby中的循环语句总结
    这篇文章主要介绍了ruby中的循环语句总结,本文总结了Ruby中常用的一些循环语法,需要的朋友可以参考下 while(当-) 循环 while 条件 语句1; 语句2 ; 语句- end 单行 while 循环 ( 语句1; 语句2 ; 语句- ) while 条件 until(直到-) 循环 until 条件 = while not (条件) for-in ...
  • 详解Lua中的if语句的使用方法
    这篇文章主要介绍了详解Lua中的if语句的使用方法,是Lua入门学习中的基础知识,需要的朋友可以参考下 if语句由一个或多个语句组成一个布尔表达式.语法 Lua编程语言的if语句语法是: 代码如下:if(boolean_expression)then   --[ statement(s) will execute if the boolean express ...
  • 详解Ruby中正则表达式对字符串的匹配和替换操作
    这篇文章主要介绍了Ruby中正则表达式对字符串的匹配和替换操作,包括对结果分组和一些特殊全局变量的介绍,需要的朋友可以参考下正则匹配 说起Ruby当然要提起它的正则表达式机制,正则表达式作为一个强大的匹配语言已经越来越多的使用到不同的领域当中,从字符串验证,匹配,到网页抽取等.虽然有些人诟病与正则表达式的匹配效率,但是考虑到正则的强大匹配能力也就无所谓了. ...
猜你喜欢