关于关键字:Ruby中“continue”的等价物

Equivalent of “continue” in Ruby

在C语言和许多其他语言中,有一个continue关键字,当在循环内部使用时,它将跳转到循环的下一个迭代。Ruby中是否有与此continue关键字等效的关键字?


是的,它叫next

1
2
3
4
5
6
for i in 0..5
   if i < 2
     next
   end
   puts"Value of local variable is #{i}"
end

输出如下:

1
2
3
4
5
Value of local variable is 2
Value of local variable is 3
Value of local variable is 4
Value of local variable is 5
 => 0..5


next

另外,看看恢复当前迭代的redo


用更为惯用的方式写伊恩·普顿的回答:

1
2
3
4
(1..5).each do |x|
  next if x < 2
  puts x
end

印刷品:

1
2
3
4
  2
  3
  4
  5

在for循环和迭代器方法(如eachmap中),ruby中的next关键字将具有跳转到循环的下一次迭代的效果(与c中的continue相同)。

然而,它实际做的只是从当前块返回。因此,您可以将它用于任何需要块的方法——即使它与迭代无关。


Ruby还有另外两个循环/迭代控制关键字:redoretry。在RubyQuickTips上阅读更多关于它们的内容以及它们之间的区别。


我想是下一个。