相当于Ruby中的“继续”

在C和许多其他语言中,有一个continue关键字,当在循环内部使用时,它会跳转到循环的下一次迭代。Ruby中有没有这个continue关键字的等价物?

295385 次浏览

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

然而,它实际上只是从当前块返回。因此,您可以将它与任何接受块的方法一起使用-即使它与迭代无关。

我认为它被称为接下来

是的,它被称为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

next

此外,看看redo,它重做了当前迭代。

Ruby还有另外两个循环/迭代控制关键字:redoretry阅读更多关于它们的信息,以及它们之间的区别,在Ruby QuickTips.

以稍微更惯用的方式编写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