Ruby 循环

  • 循环

    Ruby中的循环用于执行相同的代码块指定的次数。本章详细介绍了Ruby支持的所有循环语句。
  • while 循环

    语法
    
    while conditional [do]
       code
    end
    
    当conditional为true时执行代码。while循环的条件通过保留字do、换行符、反斜杠\或分号;与代码分隔。
    示例:
    
    $i = 0
    $num = 5
    
    while $i < $num  do
       puts("在循环内 i = #$i" )
       $i +=1
    end
    
    尝试一下
  • while 修饰符

    语法
    
    code while condition
    
    或者
    
    begin 
      code 
    end while conditional
    
    condition是true,执行代码。 如果一个while修饰符跟在一个begin,end语句后面,那么代码将在条件运算之前执行一次。
    示例:
    
    $i = 0
    $num = 5
    begin
       puts("循环内部 i = #$i" )
       $i +=1
    end while $i < $num
    
    尝试一下
  • until 声明

    语法
    
    until conditional [do]
       code
    end
    
    当conditional为假时执行代码。until语句的条件与代码通过保留字do、换行符或分号分隔。
    示例:
    
    $i = 0
    $num = 5
    
    until $i > $num  do
       puts("循环内部 i = #$i" )
       $i +=1;
    end
    
    尝试一下
  • until 修饰符

    语法
    
    code until conditional
    
    或者
    
    begin
       code
    end until conditional
    
    当条件为假时执行代码。如果until修饰符跟在begin - end语句后面,则在条件运算之前执行一次代码。
    示例:
    
    $i = 0
    $num = 5
    begin
       puts("循环内部 i = #$i" )
       $i +=1;
    end until $i > $num
    
    尝试一下
  • for 声明

    语法
    
    for variable [, variable ...] in expression [do]
       code
    end
    
    为expression中的每个元素执行一次代码。
    示例:
    
    for i in 0..5
       puts "局部变量的值为 #{i}"
    end
    
    尝试一下
    for...循环几乎完全等同于以下内容-
    
    (expression).each do |variable[, variable...]| code end
    
    不过for循环不会为局部变量创建新的作用域。for循环的表达式通过保留字do、换行符或分号与代码分隔。
    
    (0..5).each do |i|
       puts "局部变量的值是 #{i}"
    end
    
    尝试一下
  • break 声明

    语法
    
    break
    
    终止最多的内部循环。如果在块中调用一个相关的块(方法返回nil)终止一个方法。
    示例:
    
    for i in 0..5
       if i > 2 then
          break
       end
       puts "局部变量的值是: #{i}"
    end
    
    尝试一下
  • next 语句

    语法
    
    next
    
    跳转到最内部循环的下一个迭代。如果在块内调用(跟yield或调用返回nil),则终止该块的执行。
    
    for i in 0..5
       if i < 2 then
          next
       end
       puts "局部变量的值是: #{i}"
    end
    
    尝试一下
  • redo 声明

    语法
    
    redo
    
    重新启动最内部循环的此迭代,而无需检查循环条件。重新启动yield或在块内调用时调用。
    
    for i in 0..5
       if i < 2 then
          puts "局部变量的值是: #{i}"
          redo
       end
    end
    
    这将产生以下结果,并将进入无限循环-
    
    局部变量的值是: 0
    局部变量的值是: 0
    ............................
    
  • retry 语句

    语法
    
    retry
    
    如果retry出现在begin表达式的rescue子句中,请从begin主体的开头重新启动。
    
    begin
       do_something # exception raised
    rescue
       # handles error
       retry  # restart from beginning
    end
    
    如果retry出现在迭代器,块或for表达式的主体中,则重新启动迭代器调用。重新计算迭代器的参数。
    
    for i in 1..5
       retry if some_condition # restart from i == 1
    end
    
    示例:
    
    for i in 0..5
       retry if i > 2
    puts "局部变量的值是 #{i}"
    end
    
    这将产生以下结果,并将进入无限循环-
    
    局部变量的值是 1
    局部变量的值是 2
    局部变量的值是 1
    局部变量的值是 2
    局部变量的值是 1
    局部变量的值是 2
    ............................