rust學習筆記基礎篇7–條件與判斷(霜之小刀)
阿新 • • 發佈:2018-11-17
rust學習筆記基礎篇7–條件與判斷(霜之小刀)
歡迎轉載和引用,若有問題請聯絡
若有疑問,請聯絡
Email : [email protected]
QQ:2279557541
if
這是最長用到的條件判斷語句,不過。。。rust裡應該叫條件判斷表示式!
先看示例程式碼
fn main() {
let judge = 15;
if judge > 10 {
println!(">10");
}else if judge > 20 {
println!(">20" );
}
else{
println!("<=10");
}
}
這裡演示的是if exp {}else if exp {} else{}
這樣的一個結構。
其實除了這些,還支援if exp {}
和if exp {} else {}
這種結構
match
這個match關鍵詞其實和c++裡面最相關的就是switch了,但是要強大的多,一方面可以進行型別匹配,可以進行匹配繫結,另外更加規範容錯,就是必須是窮舉形勢匹配,如果你沒有進行窮舉行匹配,就必須有個_用來表示c++裡面的default。
fn main() {
//Some()
let x = 1;
//這是我們通常看到的分支語句類似c++的switch
match x {
1 => println!("is one"),
2 => println!("is two"),
3 => println!("is three"),
_ => println!("not one, two, three"), // this causes an error as it is unreachable
}
//下面的匹配有些奇怪,Some和None都是Option模板列舉的一種格式
//首先根據列舉判斷y應該是屬於Some型別
//然後發現z匹配繫結到5,所有打印出來為z為5
let y = Some(5);
match y{
Some(z) => println!("some:{}",z),
None => println!("none"),
}
//這個就沒有型別匹配,直接將x繫結為5,但是這裡有個陷阱,裡面的x和外面的不是一個哦~~~
match x{
x=>println!("{}",x),
}
}
if let
if let是一種更加簡潔的條件匹配。
比如我們上一部分說的這段程式碼。
let x = Some(5);
match x{
Some(x) => {
func(x);
},
_=>println!("no matched"),
}
其實有一種更加簡潔的寫法就是if let的寫法
let y = Some(5);
if let Some(y) = y{
func(y);
}
這種的原理其實就是根據match的匹配來的