- 主题:null 是个大错误
你的意思我明白,但例子不好
应该怎么使用null在最近几年已经被研究的很充分了,比如swift的optional机制。某些时候null是不可缺少的,比如accountInfo的picture,未设定时null也是有意义的状态,代表了此属性不存在。
对于file我支持取消null,这种情况下其实isopen甚至if也没有必要了。open的时候有任何问题直接抛出异常在上层统一收集的可读性更高。
python的None是另外一回事,python的int和string都不可以为None,None是一个特殊类型NoneType。所有的None都是一样的。你“把int赋值成None”,和把int赋值成string是一样的。
python是没有强类型检查的鸭子系统,你是不可能禁止任一类型对象传入的,函数通常也不需要object的实际类型是什么。
【 在 hgoldfish 的大作中提到: 】
: 编程语言最基本的类型,整型、浮点都是没有 null 值的。一般用零来表示“无”这个意思。
: 诚然,很多语言比如 python, java 的字符串和数字类型可以赋值为 null. 其实不对,字符串为空的时候应该用零长度字符串,而不是空指针。在 python, java 语言里面,把数字和字符串变量赋值为 null 都是不合理的代码。
: 这不禁让我发出这个疑问,拥有“空”这个语义是不是应该交由类型来决定才对?
: ...................
--
FROM 155.64.23.*
Null是表示”不存在“,未赋值而使用在任何时候都不对,应在编译层面被禁止而不是额外写if。Nullable类型代表了缺省值为”不存在“。
【 在 byethu 的大作中提到: 】
: Null用来表示“未赋值”这种状态不正合适吗?比如这样使用:
: string foo = null
: if (should_get_from_input1)
: ...................
--
FROM 155.64.23.*
控件默认值为empty string,各家都是这么做的
【 在 byethu 的大作中提到: 】
: "未赋值而使用在任何时候都不对" -- 这种情况怎么处理:用一个变量来接受UI界面的用户输入,怎样检查用户是否已经输入?除了接受值的变量,再定义一个boolean?这不繁琐吗?我认为这种情况从语义上说变量就是处于“未赋值”,为什么不允许变量就有个未赋值状态呢。
: 所谓的Maybe不也是默认了变量可能存在未赋值的情况,它只不过实现方式和nullable变量不同。
:
--
FROM 155.64.23.*
现实社会里匿名和没有名字显然不是一回事,你认为怎么合适就怎么做。
【 在 nikezhang 的大作中提到: 】
: 你定义一个dto接受页面传参数,怎么区分没有传姓名和姓名传了空格?
--
FROM 27.91.71.*