gpt4 book ai didi

Perl 跳出 If 语句

转载 作者:行者123 更新时间:2023-12-03 02:04:38 27 4
gpt4 key购买 nike

这个问题刚刚出现:如何打破 if 语句?我有一个很长的 if 语句,但有一种情况我可以尽早摆脱它。

在循环中我可以这样做:

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

但是,我可以对 if 语句执行同样的操作吗?

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

我知道我可以将 if 语句放入一个 block 中,然后我可以跳出该 block :

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

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

if ( some_condition ) {
run_subroutine();
}

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

但是有什么方法可以退出 if 条件吗?

<小时/>

分辨率

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

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

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

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

这表明 if 语句的正常流程是标准的,但在某些条件下,if 语句会提前退出 - 很像使用 last nextwhilefor 循环中退出循环。

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

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

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

最佳答案

您可以使用basic block它受 lastnextredo 的影响,因此可能会中断。

if ($condition) {EXIT_IF:{

last EXIT_IF; # break from code block

print "never get's executed\n";
}}
<小时/>
EXIT_IF: {
if ($condition) {

last EXIT_IF; # break from code block

print "never get's executed\n";
}
}

关于Perl 跳出 If 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17053666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com