Nil waarde
Gebruik van de nil
De nil is een speciale waarde om aan te geven: geen concrete waarde zoals bijvoorbeeld de integer 123 of de string "abc". De nil heeft geen type; er is bijvoorbeeld geen integer nil of string nil.
Hieronder staan voorbeelden van het gebruik van de nil.
Voorbeeld | Resultaat | Type | Toelichting |
---|---|---|---|
nil | nil | - | De nil waarde is gespecificeerd. |
nil = nil | true | Boolean | Test of nil gelijk is aan nil. |
if 3 > 4 then 5 end | nil | - | De 3>4 is niet waar en de if expressie heeft geen else gedeelte. Het resultaat is nil. |
isnil(if 3 > 4 then 5 end) | true | Boolean | De functie isnil(...) met één argument test of de waarde nil is en toont in dit geval aan dat het resultaat van bovenstaande expressie nil is. |
if 3 > 4 then 5 else 6 end | 6 | Integer | Voor de volledigheid de if expressie met een else gedeelte. |
isnil(3, 4) | 3 | Integer | De functie isnil(...) met twee argumenten geeft het eerste argument terug, tenzij dat nil is. Als het eerste argument nil is dan geeft de functie het tweede argument terug. |
isnil(nil, 4) | 4 | Integer | Het eerste argument is nil en daarom geeft de functie het tweede argument terug. |
isnil(nil, "abc") | "abc" | String | De functie geeft het juiste argument terug, met behoud van het type. |
isnil(isnil(nil, nil)) | true | Boolean | De binnenste isnill(...) geeft het tweede argument terug omdat het eerste argument nil is. Het binnenste resultaat is nil, wat getest wordt met de buitenste isnil(...). |
case when 3 > 4 then 5 when 6 > 7 then 8 end | nil | - | Naar voorbeeld van de if expressie zonder else gedeelte is dit een case expressie zonder else gedeelte. |
"abc" = nil | false | Boolean | De string "abc" is niet nil. |
nil != 123 | true | Boolean | De nil is niet gelijk aan de integer 123. |
max() | nil | - | De max(...) functie accepteert 0 or meer argumenten en geeft de maximum waarde terug. Als er geen argumenten zijn dan is het resultaat nil. |
Nil propagatie
Bovenstaand overzicht bevat voorbeelden van expressies waarvoor het gedrag van de nil gedefinieerd is. Als geen specifiek gedrag gedefinieerd is dan is het standaard gedrag dat de nil propageert tijdens expressie evaluatie.
Voorbeeld | Resultaat | Type | Toelichting |
---|---|---|---|
123 + nil | nil | - | Integer 123 + nil is niet gedefinieerd. De expressie levert geen fout op. In plaats daarvan levert de evaluatie van de expressie nil op. |
(2 * 3) / (4 * nil) | nil | - | 2 * 3 levert 6 op, 4 * nil levert nil op, dit propageert, 6 / nil levert nil op. |
not nil | nil | - | Een not van een nil is niet gedefinieerd. |
round(nil) | nil | - | De functie round(...) verwacht een getal om af te ronden. Het nil argument propageert en het functieresultaat is nil. |
concat("abc", nil, 123) | abcnil123 | String | De functie concat(...) specificeert dat de nil niet propageert en terugkomt in het resultaat als de string "nil". |
Nil en default waarden
Als een expressie evalueert tot nil dan is er de mogelijkheid in plaats van de nil een default waarde te gebruiken. De Zie ook lijst onderaan deze pagina verwijst naar een uitleg over het gebruik van default waarden.