加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl打破了If语句

发布时间:2020-12-15 21:17:17 所属栏目:大数据 来源:网络整理
导读:刚出现这个问题:我如何突破if语句?我有一个很长的if语句,但有一种情况我可以在早期就突破它。 在循环中,我可以这样做: while (something ) { last if $some_condition; blah,blah,blah ...} 但是,我可以使用if语句执行相同的操作吗? if ( some_condit
刚出现这个问题:我如何突破if语句?我有一个很长的if语句,但有一种情况我可以在早期就突破它。

在循环中,我可以这样做:

while (something ) {
    last if $some_condition;
    blah,blah,blah
    ...
}

但是,我可以使用if语句执行相同的操作吗?

if ( some_condition ) {
    blah,blah
    last if $some_other_condition; # No need to continue...
    blah,blah
    ...
}

我知道我可以将if语句放在一个块中,然后我可以突破块:

}
    if ( some_condition ) {
        ...
        last if $some_other_condition; # No need to continue...
        blah,blah
        ...
    }
}

或者,我可以创建一个子程序(可能以编程方式更好):

if ( some_condition ) {
    run_subroutine();
}

sub run_subroutine {
    blah,blah
    return if $some_other_condition;
    blah,blah
    ...
}

但是,无论如何退出if条件?

解析度

问题出现了,因为我正在用他们的代码帮助某人。在相当长的if语句中,嵌入了其他几个if语句。代码看起来像这样:

if ( $condition1 ) {
    blah,blah;
    if ( not $condition2 ) {
       blah,blah;
       if ( not $condition3 ) {
          blah,blah;
       }
    }
}

我认为通过这样做可以使整个事情更具可读性:

if ( $condition1 ) {
    last if $condition2;
    blah,blah;
    last if $condition3;
    blah,blah;
}

这表明if语句的正常流程是标准的,但在某些条件下,if语句提前退出 – 就像在一段时间内使用last或next或for循环退出循环一样。

我喜欢mpapec’s使用标签的解决方案 – 即使我不使用标签本身。标签是我的if的描述:

IF-UNDER-CONDITION1:
{
    if ( $condition1 ) {
        last if $condition2;
        blah,blah;
        last if $condition3;
        blah,blah;
    }
}

虽然它不是标准的编码技术,但代码的流程足够明显,以至于典型的低级Perl开发人员(我离开后必须维护此代码的开发人员)可以弄清楚代码正在做什么并维护它。他们甚至可能在这个过程中学到一些东西

解决方法

您可以使用 basic block,它受到last,next和redo的限制,因此可能会中断。
if ($condition) {EXIT_IF:{

   last EXIT_IF; # break from code block

   print "never get's executedn";
}}
EXIT_IF: {
  if ($condition) {

     last EXIT_IF; # break from code block

     print "never get's executedn";
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读