(异想天开)Rust的变量

本文探讨了Rust编程语言中的Shadowing特性,即如何通过重复定义同名变量实现类型转换。作者指出,这在保持代码表现力的同时,允许在运行时改变变量类型。例如,spaces变量从字符串变为数值。尽管Rust是静态类型语言,但通过Shadowing,变量的类型可以在程序执行中变化。同时,文章提及let和mut的使用对变量可变性的影响,并表达了对这一设计目的的思考,强调理解作者的设计意图对学习的重要性。

之所以要加上这个时间后缀,是因为记录一点心得。因为这是从头学,理解还不深,有些异想天开的想法,试着记录着。可能不太准确,可能理解有误,如果有读者,请不要当做教学篇看待,因为文章里所有的内容,还处于【猜想】->【实践】->【猜想】的这个循环中。

关于变量,Rust有一个Shadowing的特性,就是可以重复定义相同名字的变量名,下一个会替换掉上一个。

let spaces = " ";
let spaces = spaces.len();

那么这里就有一个奇怪的念头了,当初Rust在语言特征里写道,通过一些规则的约束,达到既维护了性能,又没有丢失表现力,是不是就是指这样的。

为我这个奇怪的念头举个例子。

Rust是静态编程语言,照理说,同类编程语言如果有了“静态”这个特点,那么变量在执行过程中就应该是无法被修改类型的。

但Rust有了隐藏这个特征,变量在运行过程中也可以被修改。如上文代码块,spaces就从字符串变成了数值。

在程序上,spaces已经不再是当初的那个spaces了,但在代码表现力上,spaces的类型是被修改了。

另外,虽然变量默认不可变,但是重新进行let赋值,它依旧可变。如果频繁使用let,而不使用mut,那么抛开程序,代码上的效果应该还是一样的。

但这里要特别注意的是,这里我只是想到“代码表现力”,所以才有了这样的想法。目前我对这样的设计是为了解决什么样的问题还并不清楚。let和mut在内存中的情况,也还没有细究,所有权机制和这里有没有关系,我还不知道。纯粹是为了兴趣,不停写,再不停学,循环下去。

实际写代码过程中,得先前后重点思量作者的设计初衷,才能了解问题到底在哪里。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值