有很多人认为特殊值的概念null
(因为它在 C、Java、C#、Perl、Javascript、SQL 等语言中使用)是一个坏主意。 SO和P.SE上有几个关于这个的问题,比如Best explanation for languages without null和 Are null references really a bad thing? .
但是,我找不到没有它们的任何语言。我熟悉的所有语言都有null
,或类似的东西(例如 Perl 中的“未定义”)。
我意识到可能每种语言都需要某种方式来表达“缺乏值(value)”。然而,除了使用“null”或“undefined”,这也可以通过使用类似 Maybe
的东西来明确化。 (Haskell) 或 Optional
( Guava )。与“null”或“undefined”的主要区别在于,如果对象具有特定类型(Maybe、Optional...),则该对象只能具有“无值”。相比之下,“null”/“undefined”通常是每个类型可能的有效值。
在这个意义上,是否有没有“null”或类似概念的语言?
最佳答案
这是一个不完整的 null-safe 语言列表,因为它们没有任何不可为 null 的类型:
?
句法。 ?
句法。 None
. ?
句法。 nil
,但在编译时防止所有空指针异常。 ?
句法。 undefined
的联合类型或 null
作为一个变种。 Maybe
. ?
句法。 Option
. ?
句法。 Option
. ?
句法。 null
option
. Maybe
. option
. 随意补充列表。年份代表首次公开发行。
关于language-agnostic - 是否有没有 "null"的语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28106234/