2014-11-21 62 views
0

你好,我只是想知道'if'語句是否可以被認爲是一個迭代。因爲迭代被使用,直到符合某個標準才允許代碼繼續。是如果語句被認爲是迭代

+8

的'If'語句是一個條件語句。迭代語句*像'For'和'While'一樣迭代*。 – 2014-11-21 20:44:42

回答

4

迭代是一個循環(一次通過)循環。 If塊不是循環。

For塊或While塊循環,並執行的那些塊—有什麼For塊內的一個或While塊—的內容之一週期是循環的一次迭代。如果For塊或While塊的整體是條件If塊,則If塊可以是一次迭代...但不是因爲它是If塊,而是因爲它是循環內部的內容。

2

不,迭代是一些代碼的重複。一旦不算作重複,否則所有代碼都將被視爲迭代。

2

If聲明本身不能被認爲是iteration。您可以根據需要運行包含if語句的代碼塊多次,但這不會使if語句成爲迭代器本身。這是什麼叫代碼塊哪個可能代表迭代。

If語句一些相似之處與其他條件語句:

  • 選擇案例
  • 嘗試捕捉

明確迭代器的優勢如下:

  • FOR/NEXT - 對於每一個/下一個
  • DO /循環
  • 雖然/結束雖然

但是,你有一些邏輯可能把if語句的使用作爲觸發,以恢復停止條件的循環,而不使用For或While等直接循環語句。但是這並不意味着if語句迭代器本身,因爲迭代是if語句和編程語言允許的特定邏輯的組合。

  1. 遞歸:

    Private Function ResumeIncrement(ByRef Number As Int32) As Boolean 
        Number = Number + 1 
        If Number < 10 Then 
         Return ResumeIncrement(Number) 
        Else 
         Return False 
        End If 
    End Function 
    
  2. GoTo語句:

    Private Sub TestGoTo() 
        Dim Number As Int32 = 0 
    IncrementMore: 
        Number = Number + 1 
        If Number < 10 Then 
         GoTo IncrementMore 
        End If 
    End Sub 
    

而作爲stated by Joel Coehoorn above時,如果塊可以包含任何東西,包括爲觸發迭代器塊,雖然還是做。如果你刪除了包含的塊,那麼它不會改變if部分應該做的事情:有條件檢查

您也可以做相反的事情,並使用If塊來控制迭代的行爲方式。像:

If SomeCondition Then 
     Exit For 
     ' Or Exit While, etc. ie, using the 'Exit' statement 
    End If 

i = 0 
Do 
    i = i + 1 
    ' ^^ capture i in Debug or Console 

    ' Control the value of i... 
    If i Mod 2 = 0 Then 
     i = i - 2 
    Else 
     i = i * 3 
    End If 
Loop While i < 30 
' i = 1, 4, 3, 10, 9, 28, 27, [Exit Do with i = 81] 

在上面的兩個例子,如果語句要麼是有突破的迭代,或再試一次,這麼說,到「控制迭代」,但決不代表它自己代表迭代器。

1

這裏也是另一個答案,清除一個不確定性。你問

是否如果語句被認爲是一個迭代?

然後你說

你好,我只是想知道一個「如果」語句是否可以被認爲 作爲迭代(你「if語句」複數製造)。因爲使用迭代直到某個 條件符合允許代碼繼續。

(那麼你做它的奇異.. ???)這「......迭代使用,直到......」自應單獨回答你的問題,假設你迭代代碼塊(這是它在這裏被理解的方式)

但是,如果直到一個符合您的要求,你是在談論迭代一些可能值 ..?

If MyValue = "" Then 
     ' ... 
    ElseIf MyValue.StartsWith("A") Then 
     ' ... 
    ElseIf MyValue.ToUpper = "TEST" Then 
    ' ... 
    Else 
     ' ... 
    End If 

是類似於:

Select Case True 
     Case MyValue = "": 
      ' ... 
     Case MyValue.StartsWith("A") 

     ' blah blah blah 
    End Select 

If MyValue = "" Then GoTo EmptyString 
    If MyValue.StartsWith("A") Then GoTo StartsWithA 
    If MyValue.ToUpper() = "TEST" Then GoTo IsTEST Else GoTo DoNothing 
EmptyString: 
    ' ... 
    GoTo DoNothing 
StartsWithA: 
    ' ... 
    GoTo DoNothing 
IsTEST: 
    ' ... 
    GoTo DoNothing 
DoNothing: 
    ' Resume... 

等等

這不是一個迭代!這就是那些爲了處理評價的列表。當條件評估爲True時,將執行相關的代碼。與迭代不同,這只是選擇正確的路徑和恢復的問題,而不是幾次走相同的路徑(循環)

是的,您正在遍歷可能值(條件狀態)的集合但不,你沒有迭代If聲明。你只是檢查結果每個單如果測試一次