02.29 Rust 編程視頻教程(進階)——024

視頻地址

頭條地址:https://www.ixigua.com/i6775861706447913485

源碼地址

github地址:見擴展鏈接。

講解內容

1、忽略模式中的值(1)使用_忽略整個值例子:

<code>fn foo(_: i32, y: i32) {    println!("This code only uses the y parameter: {}", y);}fn main() {    foo(3, 4);}/<code>

說明:對函數中的參數使用佔位符,主要是在實現trait的時候使用(如不需要特徵指定函數中的某個參數)。

(2)使用_忽略部分值

<code>let numbers = (2, 4, 8, 16, 32);match numbers {    (first, _, third, _, fifth) => {        println!("Some numbers: {}, {}, {}", first, third, fifth)    },}/<code>

(3)通過在名字前以一個下劃線開頭來忽略未使用的變量例子1:

<code>fn main() {    let _x = 5;    let y = 10;}/<code>

說明:上述代碼中,編譯時對未使用y警告,對未使用x不會警告。

只使用 _ 和使用以下劃線開頭的名稱有些微妙的不同:比如_x 仍會將值綁定到變量,而 _ 則完全不會綁定。

例子2:

<code>//會報錯,因為以下劃線開頭的變量仍然會綁定值let s = Some(String::from("Hello!"));if let Some(_s) = s {    println!("found a string");}println!("{:?}", s);/<code>

例子3:

<code>//不會報錯,因為s的所有權不會移動到\\_中let s = Some(String::from("Hello!"));if let Some(_) = s {    println!("found a string");}println!("{:?}", s);/<code>

(4)用..忽略剩餘值對於有多個部分的值,可以使用 .. 語法來只使用部分並忽略其它值例子1:

<code>fn main() {    let numbers = (2, 4, 8, 16, 32);    match numbers {        (first, .., last) => { //自動匹配到第一個和最後一個值            println!("Some numbers: {}, {}", first, last);        },    }}/<code>

例子2:

<code>//下面的例子錯誤,因為..匹配必須是無歧義的fn main() {    let numbers = (2, 4, 8, 16, 32);    match numbers {        (.., second, ..) => {            println!("Some numbers: {}", second)        },    }}/<code>


分享到:


相關文章: