Perl-11---循环修饰符
http://bdxnote.blog.163.com/blog/static/844423520083183751732/ 在编写程序的过程中,常常要用到嵌套的循环结构,有时侯需要使用一种手段来中断它;Perl提供了以下四个循环修饰符:continue、next、last、redo; 1、continue语句块: for循环的递增列表是在循环体之后执行的,continue语句块在功能上等价于循环的递增列表;在while循环、until循环和foreach循环中可以加入continue语句块: ◆?while循环 ????while(条件表达式) ?? ?{ ???? ?? #while循环体 ?? ?} ????continue ???? ?? #continue程序块;可以执行while循环的递增列表,操作while循环的循环控制变量; ?? } ◆?until循环 ??? until(条件表达式) ??? { ???? ?? #until循环体 ??? } ?? ?continue ??? ???#continue程序代码块; ◆?foreach循环 ????foreach? SCALAR? (LIST) ????? ?#foreach循环体 由于continue语句块式另外一种实现递增列表的方式,所以,for循环中不能有continue语句块;下面的写法式错误的,而且有语法错误: for(表达式1;表达式2;表达式3) { ??? #for循环体 } continue ??? #continue语句块 在同一个时刻使用continue语句块和next、last以及redo修饰符时,遵循以下规则: ★?next 循环修饰符停止执行从next语句的下一语句开始到循环体结束标识符之间的语句,转去执行continue语句块,然后再返回到循环体的起始处开始执行下一次循环; ★?last 循环修饰符彻底退出其所在的循环语句块,从而结束循环,last语句之后的语句不再执行,continue语句块也不再执行; ★?redo 循环修饰符直接转到循环体的第一行开始重复执行本次循环,redo语句之后的语句不再执行,continue语句块也不再执行; 2、 last 语句: last 语句可以带标号修饰符,也可以不带标号修饰符;如:last ;或 last LABEL; 带标号修饰符LABEL的 last 语句表示退出与标号修饰符LABEL相关联的语句块;不带标号修饰符的last语句表示退出last语句所在的当前语句块;如果是在for循环中或者是带有continue语句块,则for循环中的递增列表或continue语句块都不再被执行; 3、redo 语句: redo 语句可以带标号修饰符,也可以不带标号修饰符;如: redo ;或 redo LABEL; 带标号修饰符LABEL的redo语句表示把循环控制流程直接转到与标号修饰符LABEL相关联的语句块的第一行处开始执行,而不再执行redo语句之后的语句和continue语句块;不带标号修饰符LABEL的redo语句表示把循环控制流程直接转到当前语句块的第一行处开始执行,而不再执行redo语句之后的语句和continue语句块;如果是在for循环中或者是带有continue语句块,则for循环中的递增列表和continue语句块都不再被执行; 4、next 语句: last和redo循环修饰符可以用于空语句块,而next语句只能用于循环体;next语句表示停止执行next语句之后的语句,转去执行continue语句块,最后再转到循环体的第一行处开始执行;next可以带标号修饰符,也可以不带标号修饰符;如:next ;或 next LABEL; 不带标号修饰符的next语句将循环控制流程转到当前循环的第一行处开始执行;带标号修饰符的next语句则退出与标号修饰符相关联的循环; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |