你好,我只是想知道是否'如果'声明可以被视为迭代。因为在满足某个条件之前使用迭代以允许代码继续。
答案 0 :(得分:4)
迭代是循环的一个循环(一次)。 If
块不是循环。
For
块或While
块是循环,并执行其中一个块的内容的一个循环 - For
块或While
块内的内容 - 是循环的一次迭代。如果For
块或While
块的整体是条件If
块,那么If
块可能是一次迭代......但不是因为它是{{{ 1}}阻止,但因为它是循环内部的东西。
答案 1 :(得分:2)
不,迭代是一些代码的重复。一旦不算作重复,否则所有代码都将被视为迭代。
答案 2 :(得分:2)
If
语句本身不能被视为iteration
。您可以根据需要多次运行包含if语句 的代码块,但这并不能使if语句成为迭代器本身。
If
语句与其他条件语句具有 某些 相似之处:
显式迭代器如下:
但是,您有一些逻辑,可以将if语句的用法作为恢复或停止循环的条件,而不使用像For或While这样的直接循环语句。但是,如果语句是迭代器本身,那就不会转变,因为迭代是if语句和编程语言允许的特定逻辑的组合。
递归:
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
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块可以包含任何内容,包括由For,While或Do触发的迭代器块。如果您删除了包含的块,那么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]
在上面的两个例子中,If语句要么打破迭代,要么再试一次,那就是说&#34;控制迭代&#34; ,但绝不是,单独代表迭代器。
答案 3 :(得分:1)
这也是清除一个不确定性的另一个答案。你问过
if语句是否被视为迭代?
(你做了#34; if语句&#34;复数)然后你说
你好,我只是想知道是否&#39;如果&#39;声明可以考虑 作为迭代。因为 迭代一直使用 满足标准以允许代码继续。
(然后你把它变成了单数...... ???)&#34; ...迭代被用到......&#34; 应该自己独自回答你的问题,假设你和#39;重复迭代代码块(这是这里理解的方式)
但是如果您正在谈论迭代一些可能的值 直到符合您的要求,该怎么办?
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
语句。您只检查 每个 单个结果如果测试一次。