Default waarde en error waarde
Default waarde
In een functieaanroep kan een default waarde gespecificeerd worden.
- Als het resultaat van de functieevaluatie niet nil is dan is dat resultaat het functieresultaat, en wordt de default waarde niet gebruikt.
- Als het resultaat van de functieevaluatie nil is dan wordt de default waarde als functieresultaat gebruikt.
De Zie ook lijst onderaan deze pagina verwijst naar een uitleg van de nil. Voorbeelden:
Voorbeeld | Resultaat | Type | Toelichting |
---|---|---|---|
round(nil, default: 0.0) | 0.0 | Double | Functie round(...) verwacht een numeriek argument, maar het argument is nil. Daardoor is de functieevaluatie nil. Een default waarde 0.0 is gespecificeerd. Daardoor is niet de nil maar de 0.0 het functieresultaat. |
abs(if 3 > 4 then 5 end, default: 1000) | 1000 | Integer | Als een deelexpressie nil oplevert dan kan de nil propageren. Het is dan niet zonder meer zichtbaar dat de expressie nil op kan leveren. In het voorbeeld is de nil niet genoemd maar treedt die wel op. Door middel van de default waarde wordt verder propageren van de nil gestopt en is het resultaat 1000. |
De default waarde kan bijvoorbeeld voor een binaire expressie gespecificeerd worden door middel van de tovalue(...) functie.
Voorbeeld | Resultaat | Type | Toelichting |
---|---|---|---|
tovalue(3 + nil, default: 6) | 6 | Integer | De binaire expressie 3 + nil levert nil op. De tovalue(...) functie geeft het functieargument terug als functieresultaat. Doordat het een functie is is er de standaard mogelijkheid een default waarde te specificeren; in dit geval 6. |
isnil(tovalue(3 + nil)) | true | Boolean | De tovalue(...) functie voert verder geen evaluatie uit. De tovalue(...) zonder de default waarde uit dit voorbeeld heeft geen meerwaarde. In het voorbeeld levert de 3 + nil als resultaat nil, wat met de functie isnil(...) aangetoond wordt. |
Error waarde
In een functieaanroep kan een error waarde gespecificeerd worden, naar voorbeeld van de default waarde.
- Als het uitvoeren van de functie goed gaat dan is het resultaat het functieresultaat, en wordt de error waarde niet gebruikt.
- Als er een fout optreedt tijdens het uitvoeren van de functie dan wordt de error waarde als functieresultaat gebruikt.
- Als er een fout optreedt en er is geen error waarde dan wordt de evaluatie afgebroken en komt een foutmelding bij de eindgebruiker terecht.
Voorbeelden:
Voorbeeld | Resultaat | Type | Toelichting |
---|---|---|---|
indexof("Abc", "c", 1 / 0, error: "Huh?") | "Huh?" | String | Het derde argument specificeert de index vanaf waar de functie moet zoeken. De index is een deling door 0 en levert een fout op. De fout komt niet bij de eindgebruiker terecht. In plaats daarvan is "Huh?" het resultaat van de functie. |
indexof("Abc", nil, 1 / 1, error: "Huh?", default: 2000) | 2000 | Integer | De error waarde en de default waarde kunnen gecombineerd worden. In het voorbeeld is de deling door 0 opgelost maar is de string waarnaar de functie moet zoeken nil. De evaluatie is nil en het functieresultaat is de default waarde 2000. |