如何使用带条件的 if let 语句?
How to use if let statement with conditions?
我知道可以在 if let 语句和这样的条件之间表达 AND 逻辑
if let (Some(a), true) = (b, c == d) {
// do something
}
但是如果我需要 OR 逻辑怎么办?
if let (Some(a)) = b /* || c == d */ {
// do something
} else {
// do something else
}
我唯一想出来的方法如下,但我觉得有点难看,因为我必须写两次代码
if let (Some(a)) = b {
// do something
} else if c == d {
// do something
} else {
// do something else
}
如果您在两种情况下都有相同的“做某事”代码,则不得使用 a
。在这种情况下,您可以使用 is_some
:
if b.is_some() || c == d {
// do something
} else {
// do something else
}
在更一般的情况下,您可以使用 matches!
检查 b
是否匹配模式而不创建任何绑定:
if matches!(b, Some(_)) || c == d {
// do something
} else {
// do something else
}
我知道可以在 if let 语句和这样的条件之间表达 AND 逻辑
if let (Some(a), true) = (b, c == d) {
// do something
}
但是如果我需要 OR 逻辑怎么办?
if let (Some(a)) = b /* || c == d */ {
// do something
} else {
// do something else
}
我唯一想出来的方法如下,但我觉得有点难看,因为我必须写两次代码
if let (Some(a)) = b {
// do something
} else if c == d {
// do something
} else {
// do something else
}
如果您在两种情况下都有相同的“做某事”代码,则不得使用 a
。在这种情况下,您可以使用 is_some
:
if b.is_some() || c == d {
// do something
} else {
// do something else
}
在更一般的情况下,您可以使用 matches!
检查 b
是否匹配模式而不创建任何绑定:
if matches!(b, Some(_)) || c == d {
// do something
} else {
// do something else
}