ajl*_*ane 31 null programming-languages
我常常想知道为什么null代表"没有价值"的语言不能区分被动的"我不知道它的价值是什么"和更加自信的"没有价值"..
有几种情况我喜欢区分这两者(特别是在使用用户输入和数据库时).
我想下面,我们两人的名字的状态unknown和null:
var apple;
while (apple is unknown)
{
askForApple();
}
if (apple is null)
{
sulk();
}
else
{
eatApple(apple);
}
Run Code Online (Sandbox Code Playgroud)
显然,我们可以通过手动存储其他地方的状态来避开它,但我们也可以为空值做到这一点.
所以,如果我们能有一个null,为什么我们不能有两个呢?
Avi*_*Avi 39
我们有一个 null 还不够糟糕吗?
dda*_*daa 34
在我的编程中,我最近采用了区分"language null"和"domain null"的做法.
"语言空"是编程语言提供的特殊值,用于表示变量具有"无值".它需要作为数据结构,参数列表和返回值中的虚拟值.
"域null"是实现NullObject设计模式的任意数量的对象.实际上,每个域上下文都有一个不同的域null.
程序员使用null作为catch-all域null是相当常见的,但我发现它往往使代码更具程序性(更少面向对象)并且更难以辨别.
每次想要一个null,问问自己:语言是null还是域null?
teh*_*van 11
javascript实际上有null和undefined(http://www.w3schools.com/jsref/jsref_undefined.asp),但许多其他语言都没有.
mar*_*jne 11
如果您需要这样的东西,很少会创建一个表示未知的静态常量.
var apple = Apple.Unknown;
while (apple == Apple.Unknown) {} // etc
Run Code Online (Sandbox Code Playgroud)
存在价值:
vars().has_key('variableName') isset(variable) typeof(variable) != 'undefined'(variable != undef)或者如果你愿意:(defined variable)当然,当变量未定义时,它不是NULL