Typ dopuszczający wartość null - Nullable type

Typy dopuszczające wartość null są cechą niektórych języków programowania, która umożliwia ustawienie wartości na wartość specjalną NULL zamiast zwykłych możliwych wartości typu danych . W językach o typie statycznym typ dopuszczający wartość null jest typem opcji , podczas gdy w językach o typie dynamicznym (gdzie wartości mają typy, ale zmienne nie) równoważne zachowanie jest zapewniane przez posiadanie pojedynczej wartości null.

NULL jest często używany do reprezentowania brakującej lub nieprawidłowej wartości, na przykład z funkcji, która nie zwróciła lub brakującego pola w bazie danych, jak w NULL w SQL .

Typy pierwotne , takie jak całkowite i wartości logiczne generalnie nie może być pusty, ale odpowiednie typy dopuszczające wartość null (pustych całkowite i pustych logiczne, odpowiednio), można również przyjąć wartość NULL.

Przykład

Zmienna całkowita może reprezentować liczby całkowite, ale 0 (zero) jest przypadkiem specjalnym, ponieważ 0 w wielu językach programowania może oznaczać „fałsz”. Nie daje nam to również pojęcia, że ​​zmienna jest pusta, a taka potrzeba występuje w wielu okolicznościach. Potrzebę tę można osiągnąć za pomocą typu dopuszczającego wartość null. W językach programowania, takich jak C# 2.0, na przykład liczbę całkowitą dopuszczającą wartość null można zadeklarować za pomocą znaku zapytania (int? x). W językach programowania, takich jak C# 1.0, typy dopuszczające wartość null mogą być definiowane przez zewnętrzną bibliotekę jako nowe typy (np. NullableInteger, NullableBoolean).

Zmienna logiczna sprawia, że ​​efekt jest bardziej przejrzysty. Jego wartości mogą być „prawda” lub „fałsz”, podczas gdy wartość logiczna dopuszczająca wartość null może również zawierać reprezentację „niezdecydowanych”. Jednak interpretacja lub traktowanie operacji logicznej obejmującej taką zmienną zależy od języka.

W porównaniu ze wskaźnikami zerowymi

W przeciwieństwie do tego, wskaźniki obiektów mogą być domyślnie ustawione na NULL w większości popularnych języków, co oznacza, że ​​wskaźnik lub referencja nie wskazuje nigdzie, że żaden obiekt nie jest przypisany (zmienna nie wskazuje żadnego obiektu). Dopuszczające wartość null odniesienia zostały wynalezione przez CAR Hoare 1965 jako część Algol W języku. Hoare opisał później swój wynalazek jako „błąd o wartości miliarda dolarów”. Dzieje się tak, ponieważ wskaźniki obiektów, które mogą mieć wartość NULL, wymagają od użytkownika sprawdzenia wskaźnika przed jego użyciem i wymagają określonego kodu do obsługi przypadku, gdy wskaźnik obiektu ma wartość NULL.

Java posiada klasy odpowiadające wartościom skalarnym, takim jak Integer, Boolean i Float. W połączeniu z autoboxingiem (automatyczną konwersją między obiektem a wartością na podstawie użycia) skutecznie pozwala to na stosowanie zmiennych dopuszczających wartość null dla wartości skalarnych.

W porównaniu z typami opcji

Implementacje typu dopuszczającego wartość null zwykle są zgodne z wzorcem obiektu null .

Istnieje bardziej ogólna i formalna koncepcja, która rozszerza koncepcję typu dopuszczającego wartość null, pochodzi od typów opcji , które wymuszają jawną obsługę wyjątkowego przypadku. Implementacje typu Option zwykle są zgodne ze wzorcem Special Case.

Wsparcie językowe

Następujące języki programowania obsługują typy dopuszczające wartość null.

Języki wpisywane statycznie z natywną obsługą null obejmują:

Języki wpisywane statycznie z obsługą null biblioteki obejmują:

Języki z typami dynamicznymi z wartością null obejmują:

  • Domyślne zmienne skalarne Perla to undefi mogą być ustawione na undef.
  • PHP z typem NULL i metodą is_null(), natywny typ dopuszczający wartość null w wersji 7.1
  • Python ma Nonewartość.
  • Julia ma nothingwartość (która jest typu Nothing) i Union{T, Nothing}typ idiom.
  • Ruby z wartością zero i typem NilClass.
  • JavaScript ma nullwartość

Zobacz też

Bibliografia