在C和许多其他语言中,有一个continue关键字,当在循环内部使用时,它会跳转到循环的下一次迭代。Ruby中有没有这个continue关键字的等价物?
continue
在for循环和迭代器方法(如each和map)中,ruby中的next关键字将具有跳转到循环的下一次迭代的效果(与C中的continue相同)。
each
map
next
然而,它实际上只是从当前块返回。因此,您可以将它与任何接受块的方法一起使用-即使它与迭代无关。
我认为它被称为接下来。
是的,它被称为next。
for i in 0..5 if i < 2 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 => 0..5
此外,看看redo,它重做了当前迭代。
redo
Ruby还有另外两个循环/迭代控制关键字:redo和retry。 阅读更多关于它们的信息,以及它们之间的区别,在Ruby QuickTips.
retry
以稍微更惯用的方式编写Ian Purton的回答:
(1..5).each do |x| next if x < 2 puts x end
打印:
2 3 4 5
使用next,它将绕过该条件,其余代码将正常工作。 下面我提供了完整的脚本和输出放
class TestBreak puts " Enter the nmber" no= gets.to_i for i in 1..no if(i==5) next else puts i end end end obj=TestBreak.new()
输出: 输入数字 10
1 2 3 4 6 7 8 9 10
有条件地使用下一个
before = 0 "0;1;2;3".split(";").each.with_index do |now, i| next if i < 1 puts "before it was #{before}, now it is #{now}" before = now end
输出:
before it was 0, now it is 1 before it was 1, now it is 2 before it was 2, now it is 3