(异想天开)Rust的变量

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

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

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

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

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

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

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

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

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

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

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值