Type conversie
Type conversies in binaire expressies
Tijdens het evalueren van een expressie zijn waarden getypeerd. Een waarde is bijvoorbeeld een string of een integer.
Smartforms past automatisch type conversie toe wanneer dat nodig is en als dat zinvol is.
Hieronder staan voorbeelden van type conversie in binaire expressies. Dat zijn expressies met een linkerwaarde, een operator zoals een +, en een rechterwaarde.
Voorbeeld | Resultaat | Type | Toelichting |
---|---|---|---|
1 + 2 | 3 | Integer | De som van twee integers levert een integer op. |
1 + 2.0 | 3.0 | Double | Conversie van 1 naar 1.0, daarna de +. |
"ab" + "CD" | "abCD" | String | De + van strings is gedefinieerd als een concatenatie. Gebruik echter bij voorkeur de concat(...) functie en gebruik de + voor numerieke waarden. |
concat("ab", "CD") | "abCD" | String | Equivalent van bovenstaande expressie. |
"ab" * "CD" | - | - | Fout. De * is niet gedefinieerd voor strings. |
"3" * 4 | 12 | Integer | Type interpretatie van de string "3", conversie naar de integer 3, daarna de *. De Zie ook lijst onderaan deze pagina verwijst naar een uitleg over type interpretatie. |
"3" + 4 | "34" | String | De + werkt als concatenatie doordat een string voor komt in de expressie. Zie boven; gebruik bij voorkeur concat("3", 4). |
integer("3") + 4 | 7 | Integer | De werking van + als concatenatie is een numerieke + geworden doordat er geen strings meer voor komen in de expressie. |
"true" and false | false | Boolean | Type interpretatie van de string "true", conversie naar de boolean true, daarna de and. |
true + "4" | "true4" | String | Conversie van de boolean true naar de string "true", daarna concatenatie door middel van de +. |
"4" + true | "4true" | String | Als hierboven. |
Type conversies bij het aanroepen van een functie
Smartforms past ook automatische type conversie toe bij het aanroepen van een functie.
Van elke functie is bekend welke types toegestaan zijn voor de argumenten van de functie. Bij een functieaanroep gebruikt Smartforms de argumenten voor zover die al van de door de functie ondersteunde types zijn, en voert type conversie uit voor de overige argumenten als dit de functieaanroep mogelijk maakt.
Hieronder staan voorbeelden van type conversie bij het aanroepen van functies.
Voorbeeld | Resultaat | Type | Toelichting |
---|---|---|---|
abs(-3) | 3 | Integer | De absolute waarde van -3 is 3. |
abs("-3") | 3 | Integer | Type interpretatie van de string "-3". Dit geeft integer -3. Daarna de absolute waarde. |
max(3, 4, "5", 2) | 5 | Integer | De max functie verwacht numerieke waarden. Type interpretatie van de string "5". |
max(3.0, 4, "5", 2) | 5.0 | Double | Type interpretatie van "5" zoals hierboven. Type conversie van de integer argumenten naar doubles, omdat een double voorkomt in de lijst van argumenten. |
length(999) | 3 | Integer | De length(...) functie verwacht een string argument; geen integer argument. De functieaanroep wordt mogelijk door de integer 999 te converteren naar de string "999". De length(...) van deze string is 3. |