1. 程式人生 > >rust學習筆記基礎篇7–條件與判斷(霜之小刀)

rust學習筆記基礎篇7–條件與判斷(霜之小刀)

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的匹配來的