我可能有一个简单的问题,但它使我震惊。我有一些代码可以对其进行重构,但是无法通过此语句弄清楚作者的想法

If (j > 0) Then greatThanPrec = greatThanPrec And (signalAmplArray(i) > signalAmplArray(j))


我想我知道基本的If Then else是如何工作的,但是无法意识到为什么之后会出现A = A之类的东西,然后AND也许是一些短暂的情况,例如C / C ++?

最佳答案

该特定的AndIf Then无关。

Then之后的代码仅根据是否greatThanPrec更新signalAmplArray(i) > signalAmplArray(j)。如果greatThanPrecTrue均为greatThanPrecsignalAmplArray(i) > signalAmplArray(j)将保持为True,否则将变为False

为了更好地看到它,请将signalAmplArray(i) > signalAmplArray(j)替换为其可能的值。您将获得两个选择:

greatThanPrec = greatThanPrec And True  'greatThanPrec does not change its value




greatThanPrec = greatThanPrec And False 'greatThanPrec becomes false


如果您想重构它,那将是

If (j > 0) Then
  If Not (signalAmplArray(i) > signalAmplArray(j)) Then
    greatThanPrec = False
  End If
End If

10-05 21:27