掌握 if-let、while-let 和 let-else

在我們深入研究 if-let、while-let 和 let-else 時,我們將發現 Rust 模式匹配功能的強大和優雅。在本文中,我們將瞭解這三個特性如何幫助你簡化代碼,使其更具可讀性和可維護性。

1,使用 if-let 優雅地處理可選值,允許你在值可用時對它們執行操作,並輕鬆地處理空情況。

2,while-let 對容器內的值重複執行操作,僅在容器爲空時停止操作。

3,let-else 可以在模式匹配時綁定變量,或者在模式不匹配時使用中斷、返回或恐慌等動作。

if-let

在 Rust 中,我們使用 if-let 來檢查 Option 中是否有內容,並僅在有內容時對其進行操作。

假設我們有一個裝着玩具的盒子,叫做 my_magical_box:

let my_magical_box = Some("toy");

我們可以使用 if-let 來檢查裏面是否有玩具:

if let Some(toy) = my_magical_box {
    println!("Yay! There's a {} inside the box! Let's play!", toy);
}

讓我們看另一個例子。假設我們有一個水果籃,既可以裝水果,也可以空着:

let magical_fruit_basket = Some("apple");

即使籃子是空的,我們有時還是想做點什麼。爲此,我們可以使用 if-let 的 else:

if let Some(fruit) = magical_fruit_basket {
    println!("Yummy! We found a {}! Let's eat it!", fruit);
} else {
    println!("Oh no! The fruit basket is empty. Let's get more fruits!");
}

這就是 if-let 在 Rust 中的工作原理!它允許我們檢查 “Option” 中是否有東西,並且只在裏面有值時纔對它做一些事情。當 Option 是空的時候,我們可以用 else 來做一些事情。

while-let

在 Rust 中,while-let 可以使我們繼續對 “Option” 中包含的值做一些事情,直到 Option 是空的。

這裏有一個簡單的例子。假設我們有一個名爲 my_magical_candy_bag 的糖果袋:

let mut my_magical_candy_bag = Some(5);

這意味着我們有 5 個糖果在袋子裏。我們可以使用 while-let 將糖果一顆一顆地從袋子中取出:

while let Some(candies) = my_magical_candy_bag {
    if candies > 0 {
        println!("We have {} candies left. Let's eat one!", candies);
        my_magical_candy_bag = Some(candies - 1);
    } else {
        my_magical_candy_bag = None;
    }
}

每取出一次,我們就會更新袋子裏剩下的糖果數量。當袋子爲空時,我們將其設置爲 None,表明它是空的,while-let 循環結束。

我們再看另一個例子:

let mut magical_numbers_box = vec![1, 2, 3, 4, 5];

我們可以使用 while-let 將數字一個一個地從 Vector 中取出並打印出來:

while let Some(number) = magical_numbers_box.pop() {
    println!("We found the number {} in the magical box!", number);
}

這將打印:

We found the number 5 in the magical box!
We found the number 4 in the magical box!
We found the number 3 in the magical box!
We found the number 2 in the magical box!
We found the number 1 in the magical box!

let-else

Rust 中的 let-else 允許我們查看 “Option” 中是否有內容,如果有,我們就可以使用它。如果是空的,我們可以做別的事情。

這裏有一個簡單的例子。假設我們有一個名爲 my_magical_box 的盒子:

let my_magical_box = Some("toy");

我們可以使用 let-else 來檢查裏面是否有玩具,並玩它。如果盒子是空的,我們可以得到一個新玩具:

let Some(toy) = my_magical_box else {
    println!("Oh no! The box is empty. Let's get a new toy!");
};
println!("Yay! We found a {} in the box! Let's play!", toy);

現在,你應該已經牢牢掌握了 if-let、while-let 和 let-else 特性,通過合理使用它們使我們的代碼更優雅、更可讀和更具可維護性。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/BdgG_2GPvKAOEHYNxDvcMw