Re: [問題] 在do while中使用last跳出無作用
※ 引述《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
推
11/20 00:43, , 1F
11/20 00:43, 1F
→
11/20 00:59, , 2F
11/20 00:59, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):