我发现在 Perl 子例程中使用标签,打破多个循环,或者用更新的变量重做某些部分,非常有帮助。社区如何看待这种编码风格?在子程序中使用标签是否令人不悦?
问问题
3636 次
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 回答