ruby 从过程中跳过迭代

drkbr07n  于 2023-06-05  发布在  Ruby
关注(0)|答案(1)|浏览(263)

我想知道是否可以在Ruby中使用Proc来跳过迭代?
我写了一段代码

def validation i
  pr = Proc.new do |i|
    if i < 3
      next
    end
  end
  pr.call(i)
end

(1..5).each do |i|
  validation i
  puts "#{i} is bigger than 3"
end

and I expected期望something like this as result结果:

3 is bigger than 3
4 is bigger than 3
5 is bigger than 3

但我得到的是
那么,是否可以在Proc中使用next来跳过外部迭代,或者有其他方法?

jjjwad0x

jjjwad0x1#

不能在validation方法中调用next,因为循环是外部的。您可以在依赖于validation调用的(1..5).each循环中使用next。下面的代码会产生您想要的结果。

编辑-代码已重构,以适当使用Proc

pr = Proc.new {|i| i < 3}

(1..5).each do |i|
  next if pr.call(i)
  puts "#{i} is bigger than 3"
end

相关问题