【发布时间】: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
但例外是昂贵的。我不想从函数返回任何内容或在函数中设置标志变量,因为我想保持代码中这些标志的清洁。
有什么想法吗?
【问题讨论】:
-
顺便说一句:
x.each do |i|比for i in x更符合 Ruby 的习惯。见:stackoverflow.com/questions/3294509/for-vs-each-in-ruby