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