Functieaanroep, functie overloads
Functieaanroep
Bij een functieaanroep wordt afhankelijk van de functie een aantal argumenten meegegeven. Het is mogelijk argumenten op positie door te geven, en/of op naam.
Voorbeeld | Resultaat | Type | Toelichting |
---|---|---|---|
now() | 2017-06-28 16:45:59 | Date time | De now(...) functie heeft geen argumenten. |
repeat("ab", 3) | "ababab" | String | Het argument op positie 1 is de te herhalen string. Het argument op positie 2 is het aantal te herhalen keren. |
repeat(3, "ab") | - | - | Fout. Er is geen functie repeat(...) met een integer op positie 1 en een string op positie 2. |
repeat(count: 3, value: "ab") | "ababab" | String | De argumenten zijn benoemd. De positie van de argumenten maakt dan niet uit. Raadpleeg de functiedocumentatie voor de namen van de argumenten. |
repeat("ab", count: 2) | "abab" | String | Gemengde aanpak. De string staat op positie 1. Het aantal herhalingen is benoemd. |
repeat(value: "ab", 2) | - | - | Fout. De aanroep bevat een positioneel argument ná een benoemd argument. De aanroep moet bestaan uit een aantal positionele argumenten gevolgd door een aantal benoemde argumenten. |
repeat(error: "FOUT", "ab", default: "X", 3) | "ababab" | String |
De default specificatie en error specificatie zijn speciale constructies. De syntax is die van een benoemd argument. Smartforms verwerkt en verwijdert deze constructies eerst, en kijkt daarna naar de posities en namen van de overblijvende argumenten. De speciale constructies leveren daarom geen verstoring op van de positionele- en benoemde argumenten. De Zie ook lijst onderaan deze pagina verwijst naar een uitleg over de default- en error constructie. |
max(1, 3, 2, 7, 4) | 7 | Integer | Functie max(...) accepteert 0 or meer argumenten en geeft de maximum waarde terug. In de functiedocumentatie staat bijvoorbeeld max(value, value...) om dit aan te geven. |
Functie overloads
Een set van functie overloads is een set van functies met dezelfde naam maar een verschillende argumentenlijst. Afhankelijk van het aantal argumenten en/of de types van de argumenten wordt de juiste functie aangeroepen.
Voorbeeld | Resultaat | Type | Toelichting |
---|---|---|---|
equals("abc", "ABC") | true | Boolean | De overload van de functie equals(...) met twee argumenten vergelijkt de strings zonder onderscheid te maken tussen hoofd- en kleine letters. |
equals("abc", "ABC", true) | false | Boolean | De overload van de functie equals(...) met drie argumenten accepteert een derde argument dat aangeeft of het onderscheid tussen hoofd- en kleine letters wel of niet gemaakt moet worden. |
Bovenstaande functie equals(...) is een voorbeeld van een functie waarvan de overloads vergelijkbaar gedrag vertonen. Onderstaande functie isnil(...) is een voorbeeld van twee overloads met verschillend gedrag bij dezelfde functienaam.
Voorbeeld | Resultaat | Type | Toelichting |
---|---|---|---|
isnil(123) | false | Boolean | De overload isnil(...) met één argument test of het argument nil is. |
isnil(nil) | true | Boolean | Idem. |
isnil(123, 2000) | 123 | Integer | De overload isnil(...) met twee argumenten geeft het eerste argument terug, tenzij dat nil is: in dat geval geeft de functie het tweede argument terug. |
isnil(nil, 2000) | 2000 | Integer | Idem. |