rustの常见编程概念:变量和可变性

1. 默认变量是不可变值的变量:

let x = 5;
println!(x);
x = 8;// not allowed! Would cause error while compiling because x is immutable
let mut y = 10;
println!(y);
y = 11;
println!(y);//that's ok.

注意,虽然无法更改变量的值,这也不意味着t这些变量是常量。理由如下:

  1. 不允许对常量使用mut关键字。即const mut x = 10不可以。
  2. const 声明的时候必须指定数据类型。而且不能用let声明。e.g. const x:i8 = 10;
  3. const可以在任何scope里面声明,包括global scope。
  4. 常量只能被赋予常量表达式。函数的返回值,或者变量表达式都不可以。

将整个程序中使用的硬编码值命名为常量可以提高程序可读性,并且更易于维护修改。

2. Shadowing

这个描述了一种现像:先声明的某名字的变量的类型被后声明的同名变量的类型覆盖了。比如:

fn main()
{
	let x = 5;
	let x = x + 1;
	let x = x * 2;
}

第二个,第三个赋值都shadow了x。let mut x = 5; x = x + 1;也可以,改变x的值,而shadow的时候就不可以像mut变量这样不带let。通过带着关键字let,我们可以改变变量的值,t并且保持变量的immutable特性。同时,Shadowing也允许我们改变变量类型:

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

这就是mut变量所不能及的。

参考文献

https://doc.rust-lang.org/book/ch00-00-introduction.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值