J'ai une grosse application ASP classique que je dois maintenir, et je suis à plusieurs reprises contrariée par l'absence de capacité d'évaluation de court-circuit. Par exemple, VBScript ne vous laissera pas partir avec:Contournement de court-circuit conditionnel VBScript
if not isNull(Rs("myField")) and Rs("myField") <> 0 then
...
... parce que si Rs (« myField ») est nulle, vous obtenez une erreur dans la deuxième condition, la comparaison null à 0. Je » ll finissent généralement le faire à la place:
dim myField
if isNull(Rs("myField")) then
myField = 0
else
myField = Rs("myField")
end if
if myField <> 0 then
...
De toute évidence, la verbosité est assez épouvantable. En regardant autour de cette grande base de code, la meilleure solution consiste à utiliser une fonction que le programmeur d'origine a écrite, appelée TernaryOp, qui se base essentiellement sur une fonctionnalité ternaire, mais je suis toujours coincé avec une variable temporaire être nécessaire dans un langage plus complet. Y a-t-il un meilleur moyen? Une façon super-secrète que le court-circuit existe vraiment dans VBScript?
Classic VB n'a pas non plus d'opération réelle ternaire, juste la fonction IIf() (immédiate si). Mais même si cela reste une fonction, les arguments de la fonction _all_ doivent être évalués avant de passer à la fonction. –