9

Perlサブルーチン内でラベルを使用したり、複数のループから抜け出したり、更新された変数で一部の部分をやり直したりするのに非常に役立つことがわかりました。このコーディングスタイルはコミュニティからどのように見られていますか?サブルーチン内でラベルを使用することは眉をひそめていますか?

4

3 に答える 3

17

いいえ。それらはあなたが説明する目的を正確に果たしており、あまり使用されていない言語の優れた機能だと思います。

一方、ラベルの使用について考えていると、コードのリファクタリングが少し必要かどうかも疑問に思います。

于 2009-10-28T09:06:22.907 に答える
12

next、、、lastおよびでラベルを使用するredoことは問題ありませんが、コード構造が最適かどうかを検討するために一時停止する必要があります。私の経験では、これらの演算子を囲んでいるループ以外で使用する必要はめったにありません(つまり、ラベルを使用する必要はありません)。

使用goto LABELは強くお勧めしません。

于 2009-10-28T13:20:45.590 に答える
8

通常、を使用する理由はありませんgoto LABEL

例えば:

my $i = 10;
Label:
# ...
goto Label if --$i;

次のように書く方が良いです:

my $i = 10;
{
  # ...
  redo if --$i;
}

ラベルを使用することを考えることができる唯一の理由は、複数のループから抜け出すこと、または外側のループを継続することです。

my $i = 10;
OUTER: while(1){
  # ...
  while(1){
    # ...
    last OUTER unless --$i;
  }
}
my $i = 10;
OUTER: {
  # ...
  {
    # ...
    redo OUTER if --$i;
  }
}
于 2009-10-28T16:45:46.710 に答える