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

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

我试图写一段代码,在那里我可以移动到循环的下一次迭代,而在循环中调用的方法。
在示例代码中,这就是我正在尝试做的事情

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

但例外是昂贵的。我不想从函数中返回任何东西,也不想在函数中设置标志变量,因为我想保持代码中没有这些标志。
有什么想法吗

vawmfj5a

vawmfj5a1#

让函数影响调用者的控制流的一种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

标签:Blocks and yields in Ruby

相关问题