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

Perl循环标签计为GOTO?

发布时间:2020-12-15 21:19:06 所属栏目:大数据 来源:网络整理
导读:一般来说,避免GOTO是一个很好的做法。记住这一点,我一直在和同事辩论这个话题。 请考虑以下代码: Line: while( ) { next Line if (insert logic); } 使用循环标签计数为goto吗? 这是什么perlsyn在perldoc不得不说: Here’s how a C programmer might co
一般来说,避免GOTO是一个很好的做法。记住这一点,我一直在和同事辩论这个话题。

请考虑以下代码:

Line:
    while( <> ) {
        next Line if (insert logic);
    }

使用循环标签计数为goto吗?

这是什么perlsyn在perldoc不得不说:

Here’s how a C programmer might code up a particular algorithm in Perl:

for (my $i = 0; $i < @ary1; $i++) {
    for (my $j = 0; $j < @ary2; $j++) {
        if ($ary1[$i] > $ary2[$j]) {
            last; # can't go to outer :-(
        }
        $ary1[$i] += $ary2[$j];
    }
    # this is where that last takes me
}

Whereas here’s how a Perl programmer more comfortable with the idiom might do it:

OUTER: for my $wid (@ary1) {
    INNER:   for my $jet (@ary2) {
                 next OUTER if $wid > $jet;
                 $wid += $jet;
             }
       }

我认为,这并不是因为你明确地告诉一个循环来做短路,然而我的同事不同意,说这只是一个花哨的GOTO,应该避免。我正在寻找一个引人注目的论据或文档,解释为什么这是或不是GOTO。我也会接受一个解释,为什么这是或不被认为是perl的好习惯。

解决方法

迪克斯特拉斯的意图从来没有像过去那样被认为是有害的东西。就是将代码的结构用作几何任何类型??的程序流程更改的主要结构都将导致我们今天所说的意大利面条代码。

您应该阅读原始文章,并记住它是在1968年写的,当标签跳转是所有编程语言中的主要流控制结构。

http://userweb.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF

(编辑:李大同)

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

    推荐文章
      热点阅读