我有一個大型的經典ASP應用程序,我不得不維護,並且我一再發現自己由於缺乏短路評估能力而受挫。例如,VBScript中不會讓你逃脫:VBScript有條件的短路解決方法
if not isNull(Rs("myField")) and Rs("myField") <> 0 then
...
...因爲如果盧比(「MyField的」)爲空,你在第二個狀態的錯誤,比較空爲0。所以我我通常最終會這樣做:
dim myField
if isNull(Rs("myField")) then
myField = 0
else
myField = Rs("myField")
end if
if myField <> 0 then
...
顯然,冗長是相當可怕的。回顧一下這個龐大的代碼庫,我發現的最好的解決方法是使用原始程序員寫的名爲TernaryOp的函數,它基本上在三元運算符類功能中移植,但我仍然使用臨時變量卡住在更全面的功能語言中是必要的。有沒有更好的辦法? VBScript中確實存在一些超級祕密的方法嗎?
經典的VB沒有真正的三元操作,只是IIf()函數(立即如果)。但即使這仍然是一個函數,所以在傳遞給函數之前,必須先計算_all_函數參數。 – 2008-09-12 18:43:15