특수 유형

Nullable type

Nullable type은 데이터 유형의 일반적인 가능한 값이 아닌 특수 값 NULL로 값을 설정할 수 있는 일부 프로그래밍 언어의 기능입니다.정적으로 입력된 언어에서는 늘 타입이 옵션타입이지만[citation needed] 다이내믹하게 입력된 언어(값에는 타입이 있지만 변수에는 타입이 없음)에서는 단일 늘 값을 갖는 등가 동작이 제공됩니다.

NULL은 SQLNULL과 같이 반환에 실패한 함수나 데이터베이스 내의 누락 필드 등의 결측값 또는 비활성값을 나타내기 위해 자주 사용됩니다.즉, NULL은 정의되어 있지 않습니다.

일반적으로 정수나 Boolean 의 원시 유형은 null일 수 없지만 대응하는 null 가능 유형(각각 null 가능 정수 및 null 가능 부울)도 NULL [jargon][citation needed]값을 가정할 수 있습니다.이것은 3진 로직에서 FALSE, NULL, TRUE와 같이 3진 로직에서 나타낼 수 있습니다.

정수 변수는 정수를 나타낼 수 있지만, 많은 프로그래밍 언어에서 0은 "거짓"을 의미하므로 0은 특별한 경우입니다.또한 이는 변수가 비어 있다고 말할 수 있는 개념을 제공하지 않으며, 이는 많은 상황에서 발생합니다.이 요구는 null 타입으로 달성할 수 있습니다.예를 들어 C# 2.0과 같은 프로그래밍 언어에서는 물음표(int? x)[1]로 null 가능한 정수를 선언할 수 있습니다.C# 1.0 등의 프로그래밍 언어에서는 외부 라이브러리에서[2] null 가능 유형을 새로운 유형으로 정의할 수 있습니다(예: null 가능).정수, Nullable Boolean).[3]

Boolean 변수를 사용하면 효과가 더 명확해집니다.값은 "true" 또는 "false"일 수 있으며, nullable 부울에는 "undefided"에 대한 표현이 포함될 수도 있습니다.단, 이러한 변수를 포함하는 논리연산의 해석 또는 처리는 언어에 따라 달라집니다.

null 포인터와 비교

이와는 대조적으로 대부분의 일반적인 언어에서 객체 포인터는 기본적으로 NULL로 설정할 수 있습니다. 즉, 포인터 또는 참조가 아무 곳이나 가리키거나 개체가 할당되어 있지 않습니다(변수가 개체를 가리키지 않음).무효 참조는 C에 의해 발명되었습니다. A. R. Hoare는 1965년 알골 W 언어의 일부로서 사용되었습니다.Hoare는 나중에 그의 발명을 "억 달러의 실수"[4]라고 묘사했다.이는 NULL일 수 있는 오브젝트 포인터는 사용자가 포인터를 사용하기 전에 포인터를 확인해야 하며 오브젝트 포인터가 NULL일 경우 특정 코드를 사용하여 처리할 필요가 있기 때문입니다.

Java에는 Integer, Boolean 및 Float와 같은 스칼라 값에 대응하는 클래스가 있습니다.자동 상자화(객체와 값 간의 자동 사용률 기반 변환)와 결합하면 스칼라 값에 대해 [citation needed]null 변수를 효과적으로 사용할 수 있습니다.

옵션 유형과의 비교

늘 타입 실장은 보통 늘오브젝트 패턴을 따릅니다.

nullable type 개념을 확장하는 보다 일반적이고 형식적인 개념이 있는데, 이는 예외적인 경우에 대한 명시적 처리를 강제하는 옵션 유형에서 비롯됩니다.옵션 타입의 실장은, 통상, 특수 케이스 [5]패턴을 따릅니다.

언어 지원

다음 프로그래밍 언어는 null 가능한 유형을 지원합니다.

네이티브 늘을 지원하는 정적 언어에는 다음이 포함됩니다.

라이브러리의 늘을 지원하는 정적 언어에는 다음과 같은 것이 있습니다.

null을 사용하는 동적 입력 언어에는 다음이 포함됩니다.

  • Perl 스칼라 변수는 디폴트로undef로 설정할 수 있습니다.undef.
  • NULL 유형 및 is_null() 메서드를 사용하는 PHP 버전 7.1의 네이티브 NULL 유형
  • Python은None가치를 [13]부여합니다.
  • 줄리아는nothingvalue (유형)Nothing)와Union{T, Nothing}관용어를 [14]입력하다
  • 이 0이고 유형이 NilClass인 루비입니다.
  • JavaScript에는null가치

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Nullable Types (C#)". Msdn.microsoft.com. Retrieved 2013-08-19.
  2. ^ "(luKa) Developer Zone - NullableTypes". Nullabletypes.sourceforge.net. Retrieved 2013-08-19.
  3. ^ "NullableTypes". Nullabletypes.sourceforge.net. Retrieved 2013-08-19.
  4. ^ Tony Hoare (2009). "Null References: The Billion Dollar Mistake". QCon London.
  5. ^ "P of EAA: Special Case". Martinfowler.com. Retrieved 2013-08-19.
  6. ^ "Optional Type - Ballerina Programming Language".
  7. ^ BillWagner. "Nullable value types - C# reference". docs.microsoft.com. Retrieved 2021-10-05.
  8. ^ "Sound null safety Dart".
  9. ^ "Null Safety - Kotlin Programming Language".
  10. ^ "Optional Types - The Swift Programming Language".
  11. ^ KathleenDollard. "Nullable Value Types - Visual Basic". docs.microsoft.com. Retrieved 2021-10-05.
  12. ^ "PHP: RFC:nullable_types".
  13. ^ "Built-in Constants — Python 3.9.5 documentation".
  14. ^ "Types · the Julia Language".