在 C 和许多其他语言中,有一个
continue
关键字,当在循环内部使用时,会跳转到循环的下一次迭代。 Ruby 中是否有与此 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
,它重做了 current 迭代。
在 for 循环和迭代器方法(如
each
和 map
)中,ruby 中的 next
关键字将具有跳转到循环的下一次迭代的效果(与 C 中的 continue
相同)。
然而它实际上所做的只是从当前块返回。因此,您可以将它与任何采用块的方法一起使用 - 即使它与迭代无关。
我认为它叫做下一个。
有条件的话可以使用下
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
使用 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
后期添加:您可能根本不想使用
next
,而是拒绝任何小于2
的值,然后打印其余的值。
通过使用
#lazy
,我们可以避免在 .reject { |x| x < 2 }
阶段创建中间数组。对于这么小的样本量来说意义不大,但如果我们在 (0..10_000_000)
上运行它,就会更有意义。
(0..5).lazy.reject { |x|
x < 2
}.each { |x|
puts x
}