作者:KJ慧兒H妹子Ed | 来源:互联网 | 2023-10-12 01:00
Rust的变量必须先声明后,才可以使用,声明变量用let关键字。其语法为:let x 1;变量完整的声明格式为:letx:i321;其中i是整数有符号类型,32位代表占32位bi
Rust的变量必须先声明后,才可以使用,声明变量用let关键字。
其语法为:let x = 1;
变量完整的声明格式为:
let x : i32 = 1;
其中i是整数有符号类型,32位代表占32位bits,后续会详解。
局部变量声明一定是以关键字let开头,变量的类型跟在:(冒号)后面。这样语法歧义性更少,更能突出变量类型,减少因为变量的类型错误,语法分析器更容易编写。
let关键字所声明的变量语句,具有模式解构(pattern destructure)的功能。关于模式结构,后面会有专门说明其用法含义的博客。
通过let声明的变量,官方称为不可变变量,可以理解为只读变量,即变量x声明后,无法进行更改。
例如:
fn main() {
let x = 1;
x = 2;
}
以上代买运行后,会编译错误:
我们要将上述代码编译通过,需要用到mut关键字,通过mut关键字声明的变量,可以实现变量x的改写:
fn main() {
let mut x = 1;
x = 2;
}
上述let声明的标量,就是一个典型的模式解构,我们把 mut x 看成一个组合,即mut x是一个“模式”,以这个为例,我们举一反三,可以用此方式同时声明多个变量:
let (mut a,mut b) = (1,2);
"="左边的部分看成是一个模式,右边是变量初始化,这是对tuple的模式解构。
在Rust中,一般把声明的局部变量并初始化的语句称为“变量绑定”,这里强调的是“绑定”的含义,与C/C++中的“赋值初始化”的语句有所区别。
Rust中,每个变量必须被合理的初始化之后才能被使用,使用未初始化的变量的错误,在Rust中是不可能出现的,当然利用unsafe,hack除外。
fn main() {
let x ;
println!("x = {}",x)
}
上述代码编译报错:
在代码中,如果变量x未初始化,但是也没有使用的这个变量x,那么编译将会通过,不会报错,同时变量声明后,可以在后面在进行初始化:
fn main(){
let x;
let a = 3;
if a != 3 {
x = 1
println!("{}",x)
}
else{
println!("{}",a)
}
}