Rust 常量
常量代表不可更改的值。如果你声明了一个常量,那么它的值将无法更改。使用常量的关键字是 const 。常量必须显式地指定类型。以下是声明常量的语法。
const VARIABLE_NAME:dataType = value;
Rust常量命名约定
常量的命名约定与变量类似。常量名称中的所有字符通常都是大写的。与声明变量不同,不使用 let 关键字声明常量。
在下面的示例中,我们在Rust中使用常量 –
fn main() {
const USER_LIMIT:i32 = 100; // Declare a integer constant
const PI:f32 = 3.14; //Declare a float constant
println!("user limit is {}",USER_LIMIT); //Display value of the constant
println!("pi value is {}",PI); //Display value of the constant
}
常量 vs 变量
在本节中,我们将学习常量和变量之间的区别因素。
- 常量使用 const 关键字声明,而变量使用 let 关键字声明。
-
变量声明可以选择具有数据类型,而常量声明必须指定数据类型。这意味着const USER_LIMIT=100会导致错误。
-
使用 let 关键字声明的变量默认是不可变的。但是,您可以使用 mut 关键字将其变为可变。常量是不可变的。
-
常量只能设置为常量表达式,而不能设置为函数调用的结果或在运行时计算的任何其他值。
-
常量可以在任何范围内声明,包括全局范围,这使它们对于代码的许多部分都需要了解的值非常有用。
变量和常量的遮蔽
Rust允许程序员使用相同的名称声明变量。在这种情况下,新变量会覆盖先前的变量。
让我们通过一个示例来理解这一点。
fn main() {
let salary = 100.00;
let salary = 1.50 ;
// reads first salary
println!("The value of salary is :{}",salary);
}
上述代码声明了两个名为salary的变量。第一个声明被赋值100.00,而第二个声明被赋值1.50。第二个变量在显示输出时隐藏了第一个变量。
输出
The value of salary is :1.50
Rust支持具有不同数据类型的变量,同时支持变量遮蔽。
考虑以下示例。
代码通过名称 uname 声明了两个变量。第一次声明赋予了一个字符串值,而第二次声明赋予了一个整数。len函数返回一个字符串值中的字符总数。
fn main() {
let uname = "Mohtashim";
let uname = uname.len();
println!("name changed to integer : {}",uname);
}
输出
name changed to integer: 9
与变量不同,常量不能被遮蔽。如果上述程序中的变量被替换为常量,编译器将会抛出一个错误。
fn main() {
const NAME:&str = "Mohtashim";
const NAME:usize = NAME.len();
//Error : `NAME` already defined
println!("name changed to integer : {}",NAME);
}