- 主题:null 是个大错误
很简单,Maybe|Optional|Result的目的是从语法上使得nullable比non-nullable更麻烦,不鼓励你在可以non-nullable的地方随便用nullable。
而Java的nullable by default效果刚好相反。
类似的,C可以忽略返回值,使得检查错误码比忽略错误码更麻烦,这也是个错误的设计。
【 在 byethu 的大作中提到: 】
: Null用来表示“未赋值”这种状态不正合适吗?比如这样使用:
: string foo = null
: if (should_get_from_input1)
: ...................
--
修改:ilovecpp FROM 124.78.175.*
FROM 124.78.175.*
rust里面"?" operator是语法糖。
【 在 xeagle 的大作中提到: 】
: 这根本不是语法糖好不好,只是个工具类而已。谁都可以写一个出来
--
FROM 124.78.175.*
恰恰maybe是用语言本身类型系统实现的库,而nullable才是需要在类型系统里单独加的。
【 在 roy 的大作中提到: 】
: 这样的话我觉得没必要单独搞个泛型类出来,@nullable挺好的
--
FROM 124.78.175.*
支持annotation,不等于编译器自动就可以在类型检查中考虑nullable,也不等于自动增加了null关键字。
【 在 roy 的大作中提到: 】
: 现代语言注解和泛型基本上都是标配
--
FROM 124.78.175.*
一开始就不要搞null,并且语言支持tagged union的话,不需要编译器或者工具做任何事就解决了null这个不存在的问题。
这可能就是所谓null是个错误的意思吧。
【 在 xeagle 的大作中提到: 】
: 虽然编译器不会检查这个,但一些代码静态工具可以检查这个注解,看注解和代码是否有矛盾的地方。如果把nullable注解加全了,感觉可以基本避免空指针问题
: :
: - 来自「最水木 for iPhone 6s Plus」
--
FROM 124.78.172.*