“Continue” (to next iteration) on VBScript

后端 未结 8 854
陌清茗
陌清茗 2021-02-03 17:43

A colleague and I were trying to figure out a way of doing the equivalent of a \"continue\" statement within a VBScript \"For/Next\" loop.

Everywhere we looked we found

8条回答
  •  渐次进展
    2021-02-03 18:09

    A solution I decided on involved the use of a boolean variable to track if the for loop should process its instructions or skip to the next iteration:

    Dim continue
    
    For Each item In collection
        continue = True
    
        If condition1 Then continue = False End If
    
        If continue Then
            'Do work
        End If
    Next
    

    I found the nested loop solutions to be somewhat confusing readability wise. This method also has its own pitfalls since the loop doesn't immediately skip to the next iteration after encountering continue. It would be possible for a later condition to reverse the state of continue. It also has a secondary construct within the initial loop, and requires the declaration of an extra var.

    Oh, VBScript...sigh.

    Also, if you want to use the accepted answer, which isn't too bad readability wise, you could couple that with the use of : to merge the two loops into what appears to be one:

    Dim i
    
    For i = 0 To 10 : Do
        If i = 4 Then Exit Do
        WScript.Echo i
    Loop While False : Next
    

    I found it useful to eliminate the extra level of indentation.

提交回复
热议问题