2011-08-30 126 views
5

使用文本文件時,繼續可以在While循環中使用嗎?在While循環中使用繼續

我想做一些處理並檢查一些值。如果屬實,我想跳過一個迭代。如果爲false,我想繼續下一行(繼續處理)。

在這種情況下繼續是否跳過迭代?

+1

我有時會發現,如果可以跳過繼續,它會使代碼更加清晰。在你的情況:如果(AcctTag <>'')和(MasterId <>'')Then DoSomething; – johnny

+1

@johnny完全同意,繼續就像goto,非常謹慎地使用它或面對意大利麪代碼怪物的憤怒。 – Johan

回答

7

測試甚至沒有必要。 The documentation已經告訴你答案:

在Delphi代碼中,繼續過程會導致控制流繼續執行下一個循環的while,repeat或repeat語句。

請注意,沒有關於循環所做的事情的警告。 Continue語句繼續執行任何循環的下一次迭代。在你的情況下,這意味着Eof將被再次檢查,然後循環的主體將運行。

+0

我覺得哪裏有歧義就是「下一次迭代」的意思。這對於'''',''while'和'repeat'來說意味着什麼?我確實知道這個問題的答案,但是我認爲,如果文檔拼寫出來的話會更好。 –

+0

例如跳到下一個迭代將更加清晰。 – NGLN

12

似乎一個快速的30秒測試會比這裏的帖子更快地回答。 :)

program Project2; 

{$APPTYPE CONSOLE} 

uses 
    SysUtils; 

var 
    i, j: Integer; 

begin 
    j := 0; 
    i := 0; 
    while i < 10 do 
    begin 
    Inc(i); 
    if Odd(i) then 
     Continue; 
    Inc(j); 
    WriteLn(Format('i = %d, j = %d', [i, j])); 
    end; 
    ReadLn; 
end. 

Sample output

注意i被調用Continue,導致j顯示奇數遞增之前,我顯示evenj僅在循環超過Continue測試時遞增。

A while以同樣的方式工作,無論您是遞增整數,連接字符串還是從文本文件中讀取數據。 A whilewhilewhile無論你如何使用它。您只需在上面的代碼中確保DoSomething實際上讀取文件中的下一行,否則您將以連續循環結束。

+1

**版主說明**請保持註釋的建設性和主題。我已經刪除了這個答案下的評論,因爲它們退化成了noise_。 –