我有一個while循環的程序,它有幾個點,其中某些條件需要採取一些動作,然後跳過剩餘的迭代。因爲這將始終是相同的代碼,我想把它放在一個子程序中,但是當我嘗試使用'next'時,作爲子文件中的最後一個語句,我得到了一個警告(通過下一個...的退出子例程),儘管它似乎按預期工作。從一個子程序結束一個循環迭代
即沒有子:
while (#condition) {
## do stuff
if (#condition to skip iteration) {
## action
next;
}
## do more stuff, with the above block repeated several times
}
與子:
while (#condition) {
## do stuff
&skip if (#condition to skip iteration);
## do more stuff, with more calls to &skip
}
sub skip() {
## action
next;
}
在塊中的代碼的其餘部分/子很短,使得將所有但下;子語句中的語句幾乎無法使用子例程的對象。
我的問題是:
- 是用 '未來;'在這樣的子程序中是好的,還是危險的/糟糕的做法?
- 有沒有更好的方法從子程序中跳過其餘的迭代?
- 如果確定並沒有更好的方法,是否有辦法抑制警告?
爲什麼在子跳過時使用圓括號?無需在這裏使用原型或簽名。也許不那麼容易混淆刪除它們。 – jmmeier 2014-09-14 14:33:12