W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
If let 允許你把 if 和 let 結(jié)合到一起,來減少某些類型的模式匹配所需的開銷。
例如,有某種 Option<T>
。如果它是 Some<T>
,我們希望在它上面調(diào)用一個函數(shù),如果不是,則什么也不做。就像下面這樣:
match option {
Some(x) => { foo(x) },
None => {},
}
在這里我們不一定非要使用匹配,例如,我們可以使用 if
if option.is_some() {
let x = option.unwrap();
foo(x);
}
這些選項都不是特別有吸引力。我們可以用 if let 語句以更好的方式做同樣的事情:
if let Some(x) = option {
foo(x);
}
如果一個模式匹配成功,它將給模式的標識符綁定任意合適的值,然后評估表達式。如果模式不匹配,則什么也不去做。
當模式不匹配時,如果你希望去做別的事情,您可以使用 else:
if let Some(x) = option {
foo(x);
} else {
bar();
}
while let
以類似的方式,當一個值匹配某種模式時,你可以用 while let 來進行條件循環(huán)。代碼如下面所示:
loop {
match option {
Some(x) => println!("{}", x),
_ => break,
}
}
轉(zhuǎn)換成下面這樣的代碼:
while let Some(x) = option {
println!("{}", x);
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: