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.

Zie ook