Partiële evaluatie
Smartforms past partiële evaluatie van expressies toe. Als evaluatie van een eerste deel van de expressie al bepalend is voor het resultaat van de expressie dan wordt dit resultaat gebruikt zonder dat het resterende deel van de expressie geëvalueerd wordt.
Voorbeeld | Resultaat | Type | Toelichting |
---|---|---|---|
true or false | true | Boolean | De linker operand true bepaalt al het resultaat van de or. De rechter operand false wordt niet geëvalueerd. |
true or (1 > 2 and 3 < 4) | true | Boolean | In dit vergelijkbare voorbeeld is evaluatie van (1 > 2 and 3 < 4) niet nodig. |
true or (1 / 0 = 0) | true | Boolean | De deling door 0 zou normaliter een fout opleveren. De fout treedt niet op doordat het tweede deel van de expressie niet geëvalueerd wordt. |
false and true | false | Boolean | De linker operand false bepaalt al het resultaat van de and. De rechter operand true wordt niet geëvalueerd. |
if 1 < 2 then 3 else 1 / 0 end | 3 | Integer | De test 1 < 2 is waar en daarom is de then operand 3 het resultaat. Evaluatie van 1 / 0 is niet nodig, en gebeurt ook niet. |
case when 1 < 2 then "KLEINER" when 1 = 2 then 1 / 0 else "GROTER" end | "KLEINER" | String | De test 1 < 2 is waar en daarom is de then operand "KLEINER" het resultaat. Evaluatie van 1 / 0 gebeurt niet. |