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