可空类型
可空类型(Nullable types)是在一些编程语言中允许出现NULL值的数据类型,用于表示缺失值()或无效值,如函数执行失败的返回值,或SQL的NULL。静态类型语言中,可空类型是可选类型。动态类型语言(即值有类型,但变量没有类型)中等价于单个空值。
原始类型如整型和布尔类型不能有空值,但有对应的可空类型(可空整型或可空布尔类型)。
语言支持
支持可空类型的编程语言:
支持原生空值的静态类型语言:
- Ballerina [1]
- C#[2] (从版本2)可声明可空整型,如
int? x
.[3] - Dart[4]
- Kotlin [5]
- Swift [6]
- PHP[7]
- Ceylon
- SQL
- SAS (Missing value)
使用库支持空值的静态类型语言:
- C#版本1.0,使用外部库[8]可定义可空类型如NullableInteger, NullableBoolean。[9]
- Visual Basic .NET[10]
- Java (从版本8)
- Scala
- Oxygene
- F#
- 静态类型的CLI语言族
支持空值的动态类型语言:
- Perl的标量类型的缺省值为
undef
,也可赋值为undef
- PHP有NULL类型和is_null()方法,从版本7.1开始有原生的可空类型[11]
- Python有
None
值[12] - Julia有
nothing
值(属于类型Nothing
)和Union{T, Nothing}
类型[13] - Ruby有nil值和NilClass类型
- JavaScript有
null
值
参见
参考文献
- ^ Optional Type - Ballerina Programming Language. [2022-03-02]. (原始内容存档于2019-01-06).
- ^ BillWagner. Nullable value types - C# reference. docs.microsoft.com. [2021-10-05]. (原始内容存档于2022-05-24) (美国英语).
- ^ Nullable Types (C#). Msdn.microsoft.com. [2013-08-19]. (原始内容存档于2016-10-17).
- ^ Sound null safety | Dart. [2022-03-02]. (原始内容存档于2022-05-28).
- ^ Null Safety - Kotlin Programming Language. [2022-03-02]. (原始内容存档于2022-02-13).
- ^ Optional Types - The Swift Programming Language. [2022-03-02]. (原始内容存档于2021-07-23).
- ^ PHP: New features - Manual. www.php.net. [2021-10-05]. (原始内容存档于2022-06-05).
- ^ (luKa) Developer Zone - NullableTypes. Nullabletypes.sourceforge.net. [2013-08-19]. (原始内容存档于2019-09-04).
- ^ NullableTypes. Nullabletypes.sourceforge.net. [2013-08-19]. (原始内容存档于2016-03-03).
- ^ KathleenDollard. Nullable Value Types - Visual Basic. docs.microsoft.com. [2021-10-05]. (原始内容存档于2022-04-11) (美国英语).
- ^ PHP: RFC:nullable_types. [2022-03-02]. (原始内容存档于2022-05-31).
- ^ Built-in Constants — Python 3.9.5 documentation. [2022-03-02]. (原始内容存档于2022-06-06).
- ^ Types · the Julia Language. [2022-03-02]. (原始内容存档于2022-03-24).