作者windincloud (当你孤单会想起谁)
看板Perl
标题Re: [问题] 在do while中使用last跳出无作用
时间Thu Nov 19 22:08:59 2009
※ 引述《liyih ()》之铭言:
: 参考文件
: 1. http://perldoc.perl.org/functions/do.html
: 2. http://perldoc.perl.org/perlsyn.html
: 3. http://en.wikipedia.org/wiki/Perl_control_structures
: ...
: do BLOCK does not count as a loop, so the loop control statements next,
: last, or redo cannot be used to leave or restart the block. See perlsyn for
: alternative strategies.
: ...
: 以下的写法或许可以,不过有明确的方式和条件来结束回圈结构会比较适当。
: LOOP: {
: do {
: last LOOP;
: } while (1);
: }
根据官方说法
所以我改写成以下写法
#!/usr/bin/perl
$i=0;
do
{
$i++;
print "Hello\n";
last if($i>0);
}while(1)
#还是失败
最後我试了
#!/usr/bin/perl
$i=0;
Loop:
{
if($i < 5)
{
do
{
$i++;
printf "Hello\n";
last Loop;
}while(1);
}
}
#可以跳出来~ 但是没有做到五次
再换成
Loop:
{
do
{
$i++
print "Hello\n";
if($i>5)
{
last Loop;
}
}while(1)
}
#成功
所以这表示用do while的无穷回圈
基本上除了在while设条件
不然就是得在内部写条件配合Label才可以跳出
这应该可以算是一个BUG吧~ :P
想不出为啥会失去功能~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.53.115
1F:推 icemango:请看上一篇 ... do BLOCK 不当成回圈 11/20 00:43
2F:→ windincloud:看来我误解COUNT这单字的用法 :P 11/20 00:59