在ruby中,通过循环内的函数移动到循环的下一次迭代

在ruby中,通过循环内的函数移动到循环的下一次迭代,ruby,for-loop,next,Ruby,For Loop,Next,我试图编写一段代码,在循环中调用一个方法时,我可以转到循环的下一个迭代 在示例代码中,这就是我要做的 def my a if a > 3 next end end x = [1,2,3,4,5,6,7] for i in x my i print i end 这会导致语法错误 实现这一点的一种方法是引发错误并捕获它 def my a if a > 3 raise "Test" end end x

我试图编写一段代码,在循环中调用一个方法时,我可以转到循环的下一个迭代

在示例代码中,这就是我要做的

def my a
    if a > 3
        next
    end
end

x = [1,2,3,4,5,6,7]

for i in x
    my i
    print i
end
这会导致语法错误

实现这一点的一种方法是引发错误并捕获它

def my a
    if a > 3
        raise "Test"
    end
end

x = [1,2,3,4,5,6,7]

for i in x
    begin
        my i
        print i
    rescue Exception => e
        #do nothing
    end
end
但例外情况是昂贵的。我不想从函数中返回任何东西,也不想在函数中设置标志变量,因为我想保持代码中没有这些标志


有什么想法吗?

让函数影响调用者的控制流的一种Ruby方法是调用者向函数传递一个块,然后函数可以执行(或不执行):


另请参见:

顺便说一句:
x.each do | i |
对于x中的i来说比
更为惯用的Ruby。见:
def my a
  yield unless a > 3
end

x = [1,2,3,4,5,6,7]

for i in x
  my i do  
    print i
  end
end

# => 123