【发布时间】:2009-08-03 16:44:38
【问题描述】:
我有一个管理错误检查的 Perl 例程。根据先前的成功,大约有 10 种不同的检查,其中一些是嵌套的。这些通常不是我需要croak/die 的特殊情况。此外,一旦发生错误,就没有必要再进行其余的检查了。
但是,我似乎想不出一个巧妙的方法来解决这个问题,除非使用类似于以下可怕的黑客攻击:
sub lots_of_checks
{
if(failcond)
{
goto failstate:
}
elsif(failcond2)
{
goto failstate;
}
#This continues on and on until...
return 1; #O happy day!
failstate:
return 0; #Dead...
}
我希望能够做的事情是这样的:
do
{
if(failcond)
{
last;
}
#...
};
【问题讨论】:
-
为什么不立即返回而不是使用 goto 失败状态?看起来不漂亮,但气味更少。
-
我喜欢坚持“单进单出”。这很可能是不可能的......我正在尝试探索替代方案。
-
在 Perl 社区中,跳出循环/子/等通常被认为是更好的形式。早期的。它清楚地表明该块的其余部分不适用于指定的条件。
-
是的。 Perlfolk 喜欢保护条款并且不关心单出口,这是他们更出色的品质之一。
标签: perl