Ruby跳出多层循环 catch...throw
在编码的时候,有时候会遇到嵌套循环的情况,最内部的循环结束的时候,想跳出所有循环,这个时候我们往往采用通过内部循环设置一个flag来控制外部跳出循环条件,比如:
1 #encoding:utf-8 2 3 for i in (1..20) do 4 flag = false 5 puts "i = #{i}" 6 for j in (40..60) do 7 puts "j = #{j}" 8 if(45 == j) then 9 flag = true 10 break 11 end 12 end 13 if flag then 14 break 15 end 16 end
看一下打印结果
1 i = 1 2 j = 40 3 j = 41 4 j = 42 5 j = 43 6 j = 44 7 j = 45
代码这样运行是没有问题的,但是代码看起来比较臃肿,如果我们使用catch...throw的话可以简写这段代码,会清爽一些
1 #encoding:utf-8 2 catch :for_loop do 3 for i in (1..20) do 4 flag = false 5 puts "i = #{i}" 6 for j in (40..60) do 7 puts "j = #{j}" 8 if(45 == j) then 9 throw :for_loop 10 end # if 11 end # for 12 end #for 13 end #catch
这样修改代码后,看起来是不是清爽了一些,运行结果仍然和上面一样。例子比较简单,希望对您有用!文笔很差,不足之处还请指出!非常感谢!