【问题标题】:Move to next iteration of a loop through a function inside the loop in ruby通过ruby中循环内的函数移动到循环的下一次迭代
【发布时间】:2016-02-25 10:11:14
【问题描述】:

我正在尝试编写一段代码,在循环中调用的方法中,我可以在其中移动到循环的下一次迭代。

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

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 for-loop next


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-03-18
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 2015-07-09
    • 2023-04-10
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多