Mam dużą klasyczną aplikację ASP, którą muszę utrzymywać i wielokrotnie udowadniałem, że nie daję sobie rady dzięki brakowi możliwości oceny zwarć. Np VBScript nie pozwolę ci uciec:Sposób obejścia warunku zwarciowego VBScript
if not isNull(Rs("myField")) and Rs("myField") <> 0 then
...
... bo jeśli Rs („myField”) jest pusty, pojawi się błąd w drugim stanie, porównując wartość null do 0. Więc ja” Zwykle kończy się to zamiast tego:
dim myField
if isNull(Rs("myField")) then
myField = 0
else
myField = Rs("myField")
end if
if myField <> 0 then
...
Oczywiście, gadatliwość jest dość przerażająca. Rozglądając się po tej dużej bazie kodu, najlepszym rozwiązaniem, jakie znalazłem, jest użycie funkcji napisanej przez oryginalnego programistę, zwanej TernaryOp, która zasadniczo przeszczepia się w potrójnej funkcji podobnej do operatora, ale nadal utknąłem przy użyciu zmiennej tymczasowej, która nie konieczne w bardziej w pełni funkcjonalnym języku. Czy istnieje lepszy sposób? Jakiś super-tajny sposób, w jaki naprawdę istnieje zwarcie w VBScript?
Klasyczny VB nie ma prawdziwego potrójnego op, tylko funkcja IIf() (natychmiastowe jeśli). Ale nawet to jest nadal funkcją, więc _liczne argumenty funkcji muszą zostać ocenione przed przejściem do funkcji. –