- 主题:null 是个大错误
【 在 hgoldfish 的大作中提到: 】
: 编程语言最基本的类型,整型、浮点都是没有 null 值的。一般用零来表示“无”这个意思。
: 诚然,很多语言比如 python, java 的字符串和数字类型可以赋值为 null. 其实不对,字符串为空的时候应该用零长度字符串,而不是空指针。在 python, java 语言里面,把数字和字符串变量赋值为 null 都是不合理的代码。
: 这不禁让我发出这个疑问,拥有“空”这个语义是不是应该交由类型来决定才对?
: ...................
指针变量是个存储单元,里面存地址。这个意义上,没有空这么一说。
存个0,本质上是非法地址(其实0地址是有意义的,就是内存中的第一个单元。)。只不过规定他是NULL罢了。非常主观的一件事。
--
修改:ylh1969 FROM 221.221.49.*
FROM 221.221.49.*
【 在 byethu 的大作中提到: 】
: "未赋值而使用在任何时候都不对" -- 这种情况怎么处理:用一个变量来接受UI界面的用户输入,怎样检查用户是否已经输入?除了接受值的变量,再定义一个boolean?这不繁琐吗?我认为这种情况从语义上说变量就是处于“未赋值”,为什么不允许变量就有个未赋值状态呢。
: 所谓的Maybe不也是默认了变量可能存在未赋值的情况,它只不过实现方式和nullable变量不同。
:
数据库的NULL映射到语言里,真的就是一个变量+一个boolean。
--
修改:ylh1969 FROM 221.221.49.*
FROM 221.221.49.*
【 在 hgoldfish 的大作中提到: 】
: c 语言是个低级语言,跟硬件打交道的,自然需要 null pointer
: 但高级语言不那么在乎效率的话,应该抛弃 null 了。
: find_one_by_key() 抛出 KeyError 啊,或者,我觉得更正确的是返回这个类型的空值,比如数字就返回 0,字符串就返回 ""。返回 null 有歧义,到底是没有这个 key 对应的值呢,还是程序员往这个 key 里面写入了 null 值?
: ...................
歧义问题不存在。
没有这个key与key对应null是一个意思。key对应null的意思也就是这个key没有值。
--
FROM 221.221.53.*