Rust中的Option<T>

一开始不知道这是用来干嘛的,看了半天我现在是这么理解的:

Rust中默认是不使用null值的,不像Java,定义一个String对象,可以不初始化,那么就是null。Rust中有了let但不初始化,那么编译是不能通过。

但是某些情况下需要表示“无”的概念。学生没有参加考试,那么考试成绩不是0,而是null,因为没参加考试,是不能讲分数计入平均分的。Rust中为了表示这个“无”,才专门去使用“无”的概念,即null的值在我的应用里是有意义的,那么我才会来用null值。

一般的编程语言,都是默认是“无”,只有需要填充值的时候,才去赋值。这个做法很自然,但是会存在很多运行时错误的弊端。

但是回头想一下类型系统的来源,类型其实是对现实生活的抽象,只有存在的事物,或状态是“有”的事物,人才会去进行抽象。那么定义时强制要求赋值,也是很自然的。同时这也引申出编码的一个规则出来,不能再在代码文件头定义一堆未使用变量,有些还没有初始化,只有变量在将被用到的时候,才会被定义、赋值和使用,这对阅读代码的使用者有时也是有好处的,对只是看代码清单,并不修改、调试、开发的人则没有意义。

 

那么怎么用呢?Rust的解决方案是用Option<T>包装一下。包装后,这么考试的分数就是Option<Score>了,这是一个枚举,有两个成员变量,Some(score)表示不为null的情况,None表示“无”的情况。

但要注意Some(score)的类型是Option<T>,而不是Score,使用时需要按需转换。

 

具体细节可以参考链接。

https://blog.csdn.net/lizhe_dashuju/article/details/108152027

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值