變量(variables)
- 變量的聲明必須以let關(guān)鍵字修飾
- 變量的值默認(rèn)是不可以被改變的
- 如果想要變量改變其值哑芹,則必須加上mut關(guān)鍵字修飾
let x = 5;
x = 6; //編譯失敗,變量的值默認(rèn)是不可以被改變的
let mut y = 6;
y = 7; //正確
常量(Constants)
- 使用const關(guān)鍵字修飾厂捞,而不是let
- 值永遠(yuǎn)不能被改變,不允許使用mut對(duì)常量進(jìn)行修飾
- 定義時(shí)必須注明值的類型
- 常量可以在任何作用域中聲明耀找,包括全局作用域
- 常量只能被設(shè)置成常量表達(dá)式脂倦,不能是函數(shù)調(diào)用的結(jié)果,或者其他任何只能在運(yùn)行時(shí)計(jì)算出的值
- 常量在整個(gè)程序生命周期中都有效
const MAX_VALUE : u32 = 100_00;
隱藏(Shadowing)
我們可以定義一個(gè)與之前變量同名的新變量冯痢,而新變量會(huì)隱藏之前的變量氮昧。
fn main(){
let x = 7;
println!("the value of x = {}",x);
let x = x+8;
println!("the value of x = {}",x);
let x = x * 9;
println!("the value of x = {}",x);
}
---結(jié)果---
the value of x = 7
the value of x = 15
the value of x = 135
隱藏與變量被標(biāo)記為mut是有區(qū)別的框杜,當(dāng)我們不小心對(duì)變量進(jìn)行重新賦值時(shí),如果沒有使用let關(guān)鍵字袖肥,將會(huì)得到一個(gè)編譯錯(cuò)誤咪辱。通過使用 let
,我們可以用這個(gè)值進(jìn)行一些計(jì)算椎组,不過計(jì)算完之后變量仍然是不變的油狂。
隱藏于mut的另一個(gè)區(qū)別,當(dāng)再次使用let
時(shí)寸癌,實(shí)際上是創(chuàng)建了一個(gè)新變量专筷,我們可以改變值的類型,但復(fù)用這個(gè)名字灵份。
fn main(){
let x = 7;
println!("the value of x = {}",x);
let x = 8.1;
println!("the value of x = {}",x);
let x = "str";
println!("the value of x = {}",x);
}
---結(jié)果---
the value of x = 7
the value of x = 8.1
the value of x = str