Jump to content

Обнуляемый тип

Типы, допускающие значение NULL, — это особенность некоторых языков программирования , которая позволяет устанавливать значение специального значения NULL вместо обычных возможных значений типа данных . В статически типизированных языках тип, допускающий значение NULL, — это тип опции , [ нужна ссылка ] в то время как в динамически типизированных языках (где значения имеют типы, а переменные — нет), эквивалентное поведение обеспечивается наличием одного нулевого значения.

NULL часто используется для обозначения отсутствующего значения или недопустимого значения, например, из функции, которая не вернула результат, или отсутствующего поля в базе данных, как NULL в SQL . Другими словами, NULL не определен.

Примитивные типы, такие как целые числа и логические значения, обычно не могут иметь значение NULL, но соответствующие типы, допускающие значение NULL (целое число, допускающее значение NULL, и логическое значение, допускающее значение NULL, соответственно) также могут принимать значение NULL. [ жаргон ] [ нужна ссылка ] В троичной логике это можно представить как ЛОЖЬ, НУЛЬ, ИСТИНА, а также в трехзначной логике .

Целочисленная переменная может представлять целые числа, но 0 (ноль) является особым случаем, поскольку 0 во многих языках программирования может означать «ложь». Кроме того, это не дает нам никакого представления о том, что переменная пуста, необходимость в этом возникает во многих случаях. Эта потребность может быть достигнута с помощью типа, допускающего значение NULL. в языках программирования, таких как C# 2.0, целое число, допускающее значение NULL, может быть объявлено с помощью вопросительного знака (int? x). Например, [1] [2] : 46  В языках программирования, таких как C# 1.0, типы, допускающие значение NULL, могут быть определены внешней библиотекой. [3] как новые типы (например, NullableInteger, NullableBoolean). [4]

Логическая переменная делает эффект более понятным. Его значения могут быть либо «истина», либо «ложь», в то время как логическое значение, допускающее значение NULL, может также содержать представление «не определено». Однако интерпретация или обработка логической операции с такой переменной зависит от языка.

По сравнению с нулевыми указателями

[ редактировать ]

Напротив, в большинстве распространенных языков указателям объектов по умолчанию может быть присвоено значение NULL . Это означает, что указатель или ссылка указывают в никуда, что никакой объект не назначен (переменная не указывает ни на какой объект).Ссылки, допускающие значение NULL, были изобретены К. А. Хоаром в 1965 году как часть Algol W. языка Позже Хоар назвал свое изобретение «ошибкой на миллиард долларов». [5] Это связано с тем, что указатели объектов, которые могут иметь значение NULL, требуют от пользователя проверки указателя перед его использованием и требуют специального кода для обработки случая, когда указатель объекта имеет значение NULL.

В Java есть классы, соответствующие скалярным значениям, например Integer, Boolean и Float. В сочетании с автоупаковкой (автоматическое преобразование между объектом и значением на основе использования) это эффективно позволяет использовать переменные, допускающие значение NULL, для скалярных значений. [ нужна ссылка ]

По сравнению с типами опционов

[ редактировать ]

Реализации типов, допускающих значение NULL, обычно придерживаются шаблона нулевого объекта .

Существует более общая и формальная концепция, расширяющая концепцию типа, допускающего значение NULL, она происходит от типов опций , которые обеспечивают явную обработку исключительного случая.

Языковая поддержка

[ редактировать ]

Следующие языки программирования поддерживают типы, допускающие значение NULL.

Статически типизированные языки со встроенной поддержкой null включают:

Статически типизированные языки с поддержкой нулевых значений библиотеки включают:

К динамически типизированным языкам с нулевым значением относятся:

  • Perl по умолчанию имеют значение Скалярные переменные undef и может быть установлен на undef.
  • PHP с типом NULL и методом is_null(), собственный тип, допускающий значение NULL, в версии 7.1. [11]
  • У Python есть None ценить. [12]
  • У Юлии есть nothing значение (которое имеет тип Nothing) и Union{T, Nothing} тип идиома. [13]
  • Ruby со значением nil и типом NilClass.
  • В JavaScript есть null и undefined ценности.

См. также

[ редактировать ]
  1. ^ «Типы, допускающие значение NULL (C#)» . Msdn.microsoft.com . Проверено 19 августа 2013 г.
  2. ^ Jump up to: а б Скит, Джон (23 марта 2019 г.). C# в глубине . Мэннинг. ISBN  978-1617294532 .
  3. ^ «(luKa) Зона разработчика — NullableTypes» . Nullabletypes.sourceforge.net . Проверено 19 августа 2013 г.
  4. ^ «Нулблетипы» . Nullabletypes.sourceforge.net . Проверено 19 августа 2013 г.
  5. ^ Тони Хоар (2009). «Нулевые ссылки: ошибка на миллиард долларов» . QCon Лондон.
  6. ^ «Необязательный тип — язык программирования Ballerina» .
  7. ^ БиллВагнер. «Типы значений, допускающие значение NULL — справочник по C#» . docs.microsoft.com . Проверено 05 октября 2021 г.
  8. ^ «Звучит нулевая безопасность | Дарт» .
  9. ^ «Null Safety — язык программирования Kotlin» .
  10. ^ Кэтлин Доллард. «Типы значений, допускающие значение NULL — Visual Basic» . docs.microsoft.com . Проверено 05 октября 2021 г.
  11. ^ «PHP: RFC:nullable_types» .
  12. ^ «Встроенные константы — документация Python 3.9.5» .
  13. ^ «Типы · Юлийский язык» .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e2105182c956bc004cef8ba0ae3eeeb9__1721778780
URL1:https://arc.ask3.ru/arc/aa/e2/b9/e2105182c956bc004cef8ba0ae3eeeb9.html
Заголовок, (Title) документа по адресу, URL1:
Nullable type - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)