頭條地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/
github地址:https://github.com/anonymousGiga/learn_rus...
1、忽略模式中的值
(1)使用_忽略整個值
例子:
fn foo(_: i32, y: i32) {
println!("This code only uses the y parameter: {}", y);
}
fn main() {
foo(3, 4);
}
說明:對函式中的引數使用佔位符,主要是在實現trait的時候使用(如不需要特徵指定函式中的某個引數)。
(2)使用_忽略部分值
let numbers = (2, 4, 8, 16, 32);
match numbers {
(first, _, third, _, fifth) => {
println!("Some numbers: {}, {}, {}", first, third, fifth)
},
}
(3)通過在名字前以一個下劃線開頭來忽略未使用的變數
例子1:
fn main() {
let _x = 5;
let y = 10;
}
說明:上述程式碼中,編譯時對未使用y警告,對未使用x不會警告。
只使用 _ 和使用以下劃線開頭的名稱有些微妙的不同:比如_x 仍會將值繫結到變數,而 _ 則完全不會繫結。
例子2:
//會報錯,因為以下劃線開頭的變數仍然會繫結值
let s = Some(String::from("Hello!"));
if let Some(_s) = s {
println!("found a string");
}
println!("{:?}", s);
例子3:
//不會報錯,因為s的所有權不會移動到\_中
let s = Some(String::from("Hello!"));
if let Some(_) = s {
println!("found a string");
}
println!("{:?}", s);
(4)用..忽略剩餘值
對於有多個部分的值,可以使用 .. 語法來只使用部分並忽略其它值
例子1:
fn main() {
let numbers = (2, 4, 8, 16, 32);
match numbers {
(first, .., last) => { //自動匹配到第一個和最後一個值
println!("Some numbers: {}, {}", first, last);
},
}
}
例子2:
//下面的例子錯誤,因為..匹配必須是無歧義的
fn main() {
let numbers = (2, 4, 8, 16, 32);
match numbers {
(.., second, ..) => {
println!("Some numbers: {}", second)
},
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結