如何在if let语句中编写多个条件?

109*_*149 5 rust

如何修改if let语句以便它也处理另一个条件,例如Some(7) == b

let a = Some(6);
let b = Some(7);
if let Some(6) = a /* && Some(7) = b */{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*lli 76

您可以使用一个简单的元组:

if let (Some(6), Some(7)) = (a, b) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,如果“b”依赖于“a”,则这不起作用。我正在寻找一种使用嵌套 if 语句的方法,例如 `if let Some(c) = a && Some(7) = c`。 (9认同)
  • @hackel,你可以使用符号“@”:“if let Some(c @ Some(7)) = a”。https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=823237c3223b4c97706857a4c6b0acd9 (3认同)

E_n*_*ate 6

if let表达式仅允许针对一个表达式的一个匹配臂模式。但是,它们可以合并为一个等效的模式匹配条件。在这种情况下,Option可以将两个值组合成一对并进行相应匹配。

if let (Some(6), Some(7)) = (a, b) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

操场

也可以看看: