Perl-11---循环修饰符

在编写程序的过程中,常常要用到嵌套的循环结构,有时侯需要使用一种手段来中断它;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语句则退出与标号修饰符相关联的循环;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值