Ruby跳出多层循环 catch...throw

在编码的时候,有时候会遇到嵌套循环的情况,最内部的循环结束的时候,想跳出所有循环,这个时候我们往往采用通过内部循环设置一个flag来控制外部跳出循环条件,比如:

 #encoding:utf-8

 for i in (1..20) do
flag = false
puts "i = #{i}"
for j in (40..60) do
puts "j = #{j}"
if(45 == j) then
flag = true
break
end
end
if flag then
break
end
end

看一下打印结果

 i = 1
j = 40
j = 41
j = 42
j = 43
j = 44
j = 45

代码这样运行是没有问题的,但是代码看起来比较臃肿,如果我们使用catch...throw的话可以简写这段代码,会清爽一些

 #encoding:utf-8
catch :for_loop do
for i in (1..20) do
flag = false
puts "i = #{i}"
for j in (40..60) do
puts "j = #{j}"
if(45 == j) then
throw :for_loop
end # if
end # for
end #for
end #catch

这样修改代码后,看起来是不是清爽了一些,运行结果仍然和上面一样。例子比较简单,希望对您有用!文笔很差,不足之处还请指出!非常感谢!

上一篇:Nova计算节点安装配置


下一篇:通过命令名称查询进程id