最近看雷達的恆虛警檢測GO-FAR算法,在兩個if-elseif-else 語句中迷失了。
大致結構如下:
if A
process1
elseif B
process2
else
process3
end
if C
process4
elseif D
process5
else
process6
end
在這裏A和C是相反的條件,之前以爲如果滿足條件A,那麼就執行process1,那麼必然不滿足C,也就不會執行process4,5,6。但是實際上當滿足條件A,執行process1之後,從第一個判斷語句中跳出來,會進入下面的分支,若滿足D,或下面的else,就可能執行process5或者6。因爲前面有end。
如果再做一下修改,將elseif中間加上空格,情況就會變得又不一樣,這時候相當於if A 是外面的判斷條件,下面的else if B及之後的語句都是裏層的判斷條件。
if A
process1
else if B
process2
else
process3
end
if C
process4
else if D
process5
else
process6
end