Rust: 变量
变量的概念来源于数学,在计算机语言中,它是数据存取的基本单位。
在 Rust 中,变量有很多不同于其他语言的地方,今天就来简单介绍一下。
变量声明
直接看下面代码:
fn main() {
// 使用let关键字声明一个变量
let a = 1;
// 也可以附带类型信息
let b: i32 = 3;
println!("{} {}", a, b);
}
Rust 使用 let 关键字来声明变量,乍一看,很像是动态语言,其实 Rust 是一门强类型语言,只不过编译器会根据变量的初始值推导出类型的。
当然,我们也可以明确地为变量指定它的类型,只需要在变量名后面,加上冒号和类型名即可。
上面代码中,变量 b 的类型是 i32,即 32 位有符号整数(32-bit signed integer),关于数据类型,我们后续会介绍到,这里简单了解就行了。
需要注意的是,如果声明一个变量时,没有为其指定初始值,那就必须带上类型信息:
fn main() {
// 无初始值时 必须附带类型信息
let a: i32;
a = 1;
println!("{}", a);
}
可变性
使用 let 声明的变量,默认是不可变的(immutable),初学 Rust 的朋友,可能在不经意间就踩了坑:
fn main() {
let a = 1;
println!("{}", a);
// 编译器报错:不能二次赋值
a = 3;
println!("{}", a);
}
如果想在后续的代码中,对指定的变量进行更改,我们需要在声明时,为这个变量加上一个 mut
的限定词,表示这个变量是可变的(mutable),即可被更改的:
fn main() {
// 需要加上mut关键字
// 表示该变量是mutable的
let mut a = 1;
println!("{}", a);
// 成功被赋值
a = 3;
println!("{}", a);
}
不过,可不要忘了,Rust 是强类型语言,它仍然会检查赋值的类型:
fn main() {
let mut a = 1;
// 编译报错 类型不符
a = "HelloWorld";
println!("{}", a);
}
变量遮盖
与其他编程语言不太一样的是,Rust 允许在当前作用域重复声明多个同名变量,后面声明的变量,会遮盖前面声明的同名变量:
fn main() {
let a = 1;
println!("{}", a);
// 重新声明一个同名变量
let a = a * 3;
println!("{}", a);
// 允许不同类型
let a = "HelloWorld";
println!("{}", a);
}
常量
虽然使用 let 声明的变量,默认是不可更改的,但不适合作为常量使用,编译器会强制 let 变量使用 snake case 的命名风格,即 my_friend 全小写的方式,并且它不能在全局作用域声明。
在 Rust 中,声明一个常量需要使用 const 关键字:
// 全局常量
const MAX_COUNT: i32 = 100;
fn main() {
println!("{}", MAX_COUNT);
}
需要注意的是,常量必须采用全大写方式,也必须附带类型信息,最后,必须给定初始值。
变量这一部分,就先介绍到这里了。
欢迎转载,转载请注明出处。