Re: [問題] 在do while中使用last跳出無作用

看板Perl作者 (當你孤單會想起誰)時間14年前 (2009/11/19 22:09), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《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
請看上一篇 ... do BLOCK 不當成迴圈
11/20 00:43, 1F

11/20 00:59, , 2F
看來我誤解COUNT這單字的用法 :P
11/20 00:59, 2F
文章代碼(AID): #1B1L5-pc (Perl)
文章代碼(AID): #1B1L5-pc (Perl)