1.變量綁定中的模式匹配
比如說下面這樣的就叫做模式匹配,但是也有一些需要注意的地方仍秤,比如說下面列舉的:
let (a, b) = (1, 2);
let c :i32= 9;
let (a1, b1) = (1, a1+2);//error:can not find a1 in this scope
let (a2, b2) = (c, c+9);//it's okay
2.可變性
rust中的綁定默認(rèn)是不可變的俏竞。不可變的綁定綁定了之后就不能再將它們的綁定關(guān)系給解除。
let a:i32 = 5;
a = 10;//error:re-assignment of immutable variable 'a'
3.rust中不能夠使用一個(gè)未經(jīng)過初始化的變量
let a:i32;
println!("{}", a);//use of possibly uninitialized variable: `a`
通過上面代碼運(yùn)行之后輸出的錯(cuò)誤結(jié)果來看术浪,我們可以看出在rust中他是不會(huì)為一個(gè)變量進(jìn)行默認(rèn)初始化工作的?否則下面的代碼就應(yīng)該出錯(cuò)了對吧:
let a:i32 ;
a = 9;
println!("{}", a);
4.作用域和隱藏
我們使用{}來表示一個(gè)代碼塊,在同一個(gè){}中的變量位于同一個(gè)作用域之中速种。但是問題是為什么我們在上面提到的關(guān)于變量綁定中的模式匹配會(huì)出現(xiàn)不在同一個(gè)作用域的錯(cuò)誤?關(guān)于變量隱藏的問題低千,在子作用域中定義的變量可以隱藏位于外層作用域中的同名變量配阵,在同一個(gè)作用域中后定義的同名變量可以隱藏位于該作用域的先前定義的變量。但是示血,要注意這里關(guān)于變量隱藏和變量可變性之間的障眼法棋傍。他們是兩個(gè)不同的概念,變量可變性不涉及新的變量难审,而變量隱藏一定是定義了一個(gè)新的變量瘫拣,只不過是同名變量而已。
let a:i32 = 9;
{
let a:i32 = 8;
println!("{}",a);//8
}
let a:i32 = 0;
println!("{}", a);//0