所有编程语言都有明确的NIL,null或undefined概念吗?

Zub*_*air 2 api null types type-systems programming-languages

我正在用许多不同的语言编写一个键值存储API(如ODBC,只是接口,而不是底层存储),虽然我不想在语言之间音译API,但我不希望例如从Java存储值作为"null",然后用另一种不支持null概念的语言读取它.我不确定我是否这么好解释,但它是我第一次尝试:)

见:

这个API太简单了吗?

关于键值存储API的讨论

Don*_*art 9

这是一个类型系统问题,所以任何回答"0"的人都会忽略这一点.

你所说的是和类型(检查"类型和编程语言").

也就是说,一种拥有n + 1居民的类型.也就是说,其元素是:

  • 您关心的所有类型的值

要么

  • 额外的价值,没什么.

这很容易描述为代数数据类型,例如在Haskell中

data Maybe a = Just a | Nothing
Run Code Online (Sandbox Code Playgroud)

奇怪的是,相对较少的语言支持和类型,因此它们将它们编码为产品(一对标签Just或Nothing,以及值本身)或者通过重载该类型的一个居民(例如-1或0变为Nothing).

此类型通常称为Maybe或Optional.