国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

RUST 每日一?。耗J狡ヅ?/h1>

這篇具有很好參考價值的文章主要介紹了RUST 每日一省:模式匹配。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????我們經(jīng)常使用let 語句創(chuàng)建新的變量綁定——但是 let 的功能并不僅限于此。事實上, let 語句是一個模式匹配語句。它允許我們根據(jù)內(nèi)部結(jié)構(gòu)對值進(jìn)行操作和判斷,或者可以用于從代數(shù)數(shù)據(jù)類型中提取值。

let tuple = (1_i32, false, 3f32);
let (head, center, tail) = tuple;

????????如上所示,通過第二句,把一個組合數(shù)據(jù)結(jié)構(gòu),拆解開來, 分成了三個不同的變量。在let語句中, =號左邊的內(nèi)容就是模式, =號右邊的內(nèi)容就是需要匹配的內(nèi)容。 相當(dāng)于從tuple變量中,提取了三個新的變量head、 center、 tail, 它們分別對應(yīng)tuple的三個成員。

????????Rust中模式匹配功能遵循的原則:我們怎么把一個數(shù)據(jù)結(jié)構(gòu)組合起來的, 我們就怎么把它拆解開來??梢酝ㄟ^下邊的例子感受一下rust的美感;

struct T1 (i32, char);
struct T2 {
    item1: T1,
    item2: bool,
} 
fn main()
{
    let x = T2 {
        item1: T1(0, 'A'),
        item2: false,
    };
    let T2 {
        item1: T1(value1, value2),
        item2: value3,
    } = x;
    println!("{} {} {}", value1, value2, value3);
}

????????Rust的“模式匹配”功能出現(xiàn)在let、match、if let、 while let、 函數(shù)調(diào)用、 閉包調(diào)用等情景中。

match

? ? ? ? match模式匹配用于流程控制,檢查當(dāng)前值是否匹配一系列模式中的某一個。模式可由字面值、變量、通配符和其他內(nèi)容構(gòu)成。每一個模式都是一個分支,程序根據(jù)匹配的模式執(zhí)行相應(yīng)的代碼。????????

????????Rust要求match模式匹配是窮盡式的,即必須窮舉所有的可能性,否則會導(dǎo)致程序錯誤。有一個處理方法是將通配符“_”放置在其他分支之后,通配符“_”會匹配上面沒有指定的所有可能的模式。

  • 豎線(|)可用于在一個 match 分支中組合多個模式;
  • 使用 ... 可以匹配某個范圍中的值;
  • 使用操作符@可以將模式中的值綁定給一個變量, 供分支右側(cè)的代碼使用, 這類匹配叫綁定模式;使用 if 關(guān)鍵字給 match 分支添加護具。
  • 可以使用if作為“匹配看守”(match guards) 。 當(dāng)匹配成功且符合if條件, 才執(zhí)行后面的語句。
  • 通配符“_”會匹配上面沒有指定的所有可能的模式。
fn main() {
 let age = 6;

 match age {
     0 => println!("You are a baby."),
     1..=7 => println!("You are a toddler."),
     8|9|10|11 => println!("You are a schoolchild."),
     i if i >= 12 && i<=17 => println!("You are a teenager."),
     n @ 18  => println!("You are {}.",n),
     19..=100 => println!("You are an adult."),
     _ => println!("Cool !"),
     }
 }

if let&while let

if let和while let表達(dá)式, 在某些場景中可替代match模式匹配來簡化代碼。
相對于match,if let 可以只匹配我們感興趣的值,對于剩下情況可以使用else來繼續(xù)處理。

fn main() {
 let value =  Some(7);
 if let Some(7) = value {
     println!("seven"); }

  if let Some(v) = value {
     println!("Some({})",v); 
  }else{
     println!("None"); 
  }

 }

條件循環(huán)while let,它會反復(fù)執(zhí)行同一個模式匹配直到出現(xiàn)失敗的情形。

fn while_let_vec() {
 let mut vec = vec![1, 2, 3, 4, 5];
 while let Some(value) = vec.pop() { 
    println!("{}", value);
 }
 }

函數(shù)參數(shù)(閉包)

通過上邊兩種情況,估計你已經(jīng)大概有一個了解了,我們就直接看例子吧。

struct T {
    item1: char,
    item2: bool,
} 
fn test( T{item1: arg1, item2: arg2} : T) {
    println!("{} {}", arg1, arg2);
} 
fn main()
{
    let x = T {
        item1: 'A',
        item2: false,
    };
    test(x);
}

類似于函數(shù)的參數(shù)列表,我們同樣可以在閉包的參數(shù)列表中使用模式。
?

其他(let,for)

????????還有一些場景我們可能也會遇到,不過如果你已經(jīng)理解了模式匹配的規(guī)律,不論是看到還是寫相關(guān)的代碼,估計也是信手拈來。

let文章開始就已經(jīng)介紹了, for可以看一下例子,是不是很自然。文章來源地址http://www.zghlxwxcb.cn/news/detail-704257.html

let v = vec!['a', 'b', 'c'];
for (index, value) in v.iter().enumerate() {
    println!("{} is at index {}", value, index);
}

到了這里,關(guān)于RUST 每日一?。耗J狡ヅ涞奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Rust 枚舉和模式匹配

    Rust 枚舉和模式匹配

    目錄 1、枚舉的定義 1.1?Option 枚舉和其相對于空值的優(yōu)勢 ?2、match 控制流結(jié)構(gòu) 2.1?匹配 Option 2.2?匹配是窮盡的 2.3?通配模式和 _ 占位符 3、if let 簡潔控制流 枚舉 ( enumerations ),也被稱作? enums 。枚舉允許你通過列舉可能的? 成員 ( variants )來定義一個類型。首先,我們

    2024年02月04日
    瀏覽(17)
  • 【Rust 基礎(chǔ)篇】Rust 模式:高效、安全和靈活的匹配工具

    在編程中,經(jīng)常需要對數(shù)據(jù)進(jìn)行匹配和處理,例如從一個復(fù)雜的數(shù)據(jù)結(jié)構(gòu)中提取特定的值,或者根據(jù)不同的情況執(zhí)行不同的邏輯。Rust是一門現(xiàn)代的系統(tǒng)編程語言,它引入了一種稱為\\\"模式\\\"(Pattern)的強大特性,使得數(shù)據(jù)的匹配和處理變得高效、安全和靈活。本篇博客將深入探

    2024年02月08日
    瀏覽(32)
  • Rust之枚舉與模式匹配

    枚舉類型,簡稱枚舉,允許列舉所有可能的值來定義一個類型。 枚舉類型:已知所有可能的值,并且所有值的出現(xiàn)是互斥的,即每次只能取一種可能的值,才使用枚舉類型。 示例:聲明一個枚舉 使用IpAddrKind中的兩個變體來創(chuàng)建實例: 注:枚舉的變體全部處于其標(biāo)識符的命

    2024年02月15日
    瀏覽(21)
  • rust學(xué)習(xí)-枚舉和模式匹配

    從ip地址入手學(xué)枚舉 枚舉的每個成員可以處理不同類型和數(shù)量的數(shù)據(jù) 使用枚舉來存儲兩種不同 IP 地址的幾種可能的選擇 可以將任意類型的數(shù)據(jù)放入枚舉成員中,甚至枚舉中放枚舉 雖然標(biāo)準(zhǔn)庫中包含一個 IpAddr 的定義,仍然可以創(chuàng)建和使用自己的定義而不會有沖突,因為并沒

    2024年02月16日
    瀏覽(30)
  • 30天拿下Rust之模式與模式匹配

    概述 ????????Rust語言以其強大的類型系統(tǒng)和所有權(quán)模型而著稱,而模式與模式匹配則是Rust中一種非常強大且靈活的工具,它允許我們在編譯時根據(jù)數(shù)據(jù)的結(jié)構(gòu)進(jìn)行條件分支處理。在Rust中,模式是一種用于匹配數(shù)據(jù)的結(jié)構(gòu),它可以是一個具體的值、一個變量綁定、一個枚

    2024年04月12日
    瀏覽(47)
  • 【Rust】Rust學(xué)習(xí) 第十八章模式用來匹配值的結(jié)構(gòu)

    【Rust】Rust學(xué)習(xí) 第十八章模式用來匹配值的結(jié)構(gòu)

    模式是 Rust 中特殊的語法,它用來匹配類型中的結(jié)構(gòu),無論類型是簡單還是復(fù)雜。結(jié)合使用模式和? match ?表達(dá)式以及其他結(jié)構(gòu)可以提供更多對程序控制流的支配權(quán)。模式由如下一些內(nèi)容組合而成: 字面值 解構(gòu)的數(shù)組、枚舉、結(jié)構(gòu)體或者元組 變量 通配符 占位符 這些部分描

    2024年02月11日
    瀏覽(16)
  • 【跟小嘉學(xué) Rust 編程】六、枚舉和模式匹配

    【跟小嘉學(xué) Rust 編程】一、Rust 編程基礎(chǔ) 【跟小嘉學(xué) Rust 編程】二、Rust 包管理工具使用 【跟小嘉學(xué) Rust 編程】三、Rust 的基本程序概念 【跟小嘉學(xué) Rust 編程】四、理解 Rust 的所有權(quán)概念 【跟小嘉學(xué) Rust 編程】五、使用結(jié)構(gòu)體關(guān)聯(lián)結(jié)構(gòu)化數(shù)據(jù) 【跟小嘉學(xué) Rust 編程】六、枚舉

    2024年02月13日
    瀏覽(32)
  • 【跟小嘉學(xué) Rust 編程】十八、模式匹配(Patterns and Matching)

    【跟小嘉學(xué) Rust 編程】一、Rust 編程基礎(chǔ) 【跟小嘉學(xué) Rust 編程】二、Rust 包管理工具使用 【跟小嘉學(xué) Rust 編程】三、Rust 的基本程序概念 【跟小嘉學(xué) Rust 編程】四、理解 Rust 的所有權(quán)概念 【跟小嘉學(xué) Rust 編程】五、使用結(jié)構(gòu)體關(guān)聯(lián)結(jié)構(gòu)化數(shù)據(jù) 【跟小嘉學(xué) Rust 編程】六、枚舉

    2024年02月11日
    瀏覽(24)
  • Rust語言從入門到入坑——(2)Rust在windows上搭建開發(fā)環(huán)境

    Rust語言從入門到入坑——(2)Rust在windows上搭建開發(fā)環(huán)境

    開始搭建一個適合在windows上運行的Rust環(huán)境。 Rust支持的程序語言很多:可詳見官網(wǎng)介紹 本文章主要是在windowns下搭建開發(fā)環(huán)境 首先,需要安裝最新版的 Rust 編譯工具和 Visual Studio Code。 Rust 編譯工具:https://www.rust-lang.org/zh-CN/tools/install Visual Studio Code:https://code.visualstudio.com

    2024年02月09日
    瀏覽(23)
  • Rust軟件外包開發(fā)語言的特點

    Rust軟件外包開發(fā)語言的特點

    Rust 是一種系統(tǒng)級編程語言,強調(diào)性能、安全性和并發(fā)性的編程語言,適用于廣泛的應(yīng)用領(lǐng)域,特別是那些需要高度可靠性和高性能的場景。下面和大家分享 Rust 語言的一些主要特點以及適用的場合,希望對大家有所幫助。北京木奇移動技術(shù)有限公司,專業(yè)的軟件外包開發(fā)公

    2024年02月12日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包