У меня есть большое классическое приложение ASP, которое я должен поддерживать, и я неоднократно оказывался в затруднении из-за отсутствия возможности оценки короткого замыкания. Например, VBScript не позволит вам сойти с рук:
if not isNull(Rs("myField")) and Rs("myField") <> 0 then
...
... потому что, если Rs ("myField") равен нулю, вы получаете ошибку во втором условии, сравнивая ноль с 0. Поэтому я обычно заканчиваю тем, что делаю это вместо:
dim myField
if isNull(Rs("myField")) then
myField = 0
else
myField = Rs("myField")
end if
if myField <> 0 then
...
Очевидно, что многословие довольно ужасно. Оглядываясь вокруг этой большой базы кода, я нашел лучший обходной путь - использовать функцию, написанную оригинальным программистом, под названием TernaryOp, которая в основном прививает тернарную функциональность, похожую на оператор, но я все еще застрял, используя временную переменную, которая не быть необходимым на более полнофункциональном языке. Есть ли способ лучше? Какой-то сверхсекретный способ, которым короткое замыкание действительно существует в VBScript?