Nullbar typ
Nullbara typer är en funktion i vissa programmeringsspråk som tillåter att ett värde sätts till specialvärdet NULL istället för de vanliga möjliga värdena för datatypen . I statiskt skrivna språk är en nollbar typ en alternativtyp [ citation needed ] , medan i dynamiskt skrivna språk (där värden har typer, men variabler inte har det), tillhandahålls likvärdigt beteende genom att ha ett enda nollvärde.
NULL används ofta för att representera ett saknat värde eller ogiltigt värde, till exempel från en funktion som inte kunde returnera eller ett saknat fält i en databas, som i NULL i SQL . Med andra ord NULL är odefinierat.
Primitiva typer som heltal och booleska kan i allmänhet inte vara noll, men motsvarande nollbara typer (nollbart heltal respektive nollbar boolean) kan också anta NULL-värdet. [ jargong ] [ citat behövs ] Detta kan representeras i ternär logik som FALSE, NULL, TRUE som i trevärdig logik .
Exempel
En heltalsvariabel kan representera heltal, men 0 (noll) är ett specialfall eftersom 0 i många programmeringsspråk kan betyda "falskt". Detta ger oss inte heller någon aning om att säga att variabeln är tom, ett behov som uppstår under många omständigheter. Detta behov kan uppnås med en nollbar typ. I programmeringsspråk som C# 2.0 kan ett nullbart heltal, till exempel, deklareras med ett frågetecken (int? x). I programmeringsspråk som C# 1.0 kan nullbara typer definieras av ett externt bibliotek som nya typer (t.ex. NullableInteger, NullableBoolean).
En boolesk variabel gör effekten mer tydlig. Dess värden kan vara antingen "true" eller "false", medan en nollbar boolean också kan innehålla en representation för "obestämd". Tolkningen eller behandlingen av en logisk operation som involverar en sådan variabel beror dock på språket.
Jämfört med nollpekare
Däremot kan objektpekare ställas in på NULL som standard i de flesta vanliga språk, vilket betyder att pekaren eller referensen pekar till ingenstans, att inget objekt är tilldelat (variabeln pekar inte på något objekt). Nullbara referenser uppfanns av CAR Hoare 1965 som en del av Algol W -språket. Hoare beskrev senare sin uppfinning som ett "miljardmisstag". Detta beror på att objektpekare som kan vara NULL kräver att användaren kontrollerar pekaren innan den används och kräver specifik kod för att hantera fallet när objektpekaren är NULL.
Java har klasser som motsvarar skalära värden, som Integer, Boolean och Float. I kombination med autoboxing (automatisk användningsdriven konvertering mellan objekt och värde) tillåter detta effektivt nullbara variabler för skalära värden. [ citat behövs ]
Jämfört med alternativtyper
Implementeringar av nollbar typ följer vanligtvis nollobjektmönstret .
Det finns ett mer generellt och formellt koncept som utvidgar begreppet nolltyp, det kommer från alternativtyper , som tvingar fram en explicit hantering av undantagsfallet.
Språkstöd
Följande programmeringsspråk stöder null-typer.
Statiskt skrivna språk med inbyggt null-stöd inkluderar:
Statiskt skrivna språk med null-stöd för bibliotek inkluderar:
- C# (sedan version 2)
- Delphi
- Gratis Pascal
- VB.NET
- Java (sedan version 8)
- Scala
- Syre
- F#
- Statiskt skrivna CLI-språk
Dynamiskt skrivna språk med null inkluderar:
-
Perl skalära variabler är som standard
undef
och kan ställas in påundef
. - PHP med NULL-typ och is_null()-metoden, inbyggd nullbar typ i version 7.1
-
Python har värdet
None
. -
Julia har
ingenting
-värdet (som är av typenIngenting
) och formspråketUnion{T, Nothing} .
- Ruby med nollvärde och typ NilClass.
-
JavaScript har ett
nullvärde