请看下面的判断语句。编程
io.open() //打开控制台窗口 var cond = 2; if( cond == 1 ){ io.print(1); } else{ //能够在if语句块前面添加代码 if( cond == 2 ){ io.print(2); } else{ //能够在if语句块前面添加代码 if( cond == 3 ){ io.print(3); } } }
按上面的思路,你能够继续写下去,嵌套十层八层应当很容易,代码也会愈来愈混乱。
可是他的确符合告终构化编程的原则:一个入口、一个出口。
这时候咱们不能再默守成规,将上面的判断语句放在一个do...while(false)语句块内部,这个“循环”语句块只会执行一次,而且能够随时能够用中断语句退出循环.改进后的代码以下:函数
io.open(); var cond = 2; do { // 循环 if(cond == 1 ) begin io.print(1); break;//能够随时跳出语句块 end; //能够在if语句块外部添加代码 if(cond == 2 )begin io.print(2); break;//能够随时跳出语句块 end; if(cond == 3 )begin io.print(3); break;//能够随时跳出语句块 end; }while( false ); //while条件为false则再也不循环
这里咱们虽然使用了break中断语句,可是全部break语句位于相同深度的嵌套层次,中断过程清晰一致。
如今咱们再也不须要else语句块来“多管闲事”,if语句完成自已的任务就能够离开。
每一个代码块(指语句块、子程序、或类、名字空间、甚至是按就近原则放在一块儿的逻辑语句块)都应当尽量减小自已的责任。spa
咱们一样能够在函数中使用上面的技巧来避免条件语句过深的嵌套。
这时候咱们须要建立一个函数、并用return语句代替退出子程序。
code
io.open(); func = function(cond){ //循环 if(cond == 1)begin io.print(1); return;//能够随时跳出语句块 end; //能够在if语句块外部添加代码 if(cond == 2)begin io.print(2); return;//能够随时跳出语句块 end; }