rust-quiz:032-or-pattern-guard.rs
问题
fn check(x: i32) -> bool {
print!("{}", x);
false
}
fn main() {
match (1, 2) {
(x, _) | (_, x) if check(x) => {
print!("3")
}
_ => print!("4"),
}
}
关键
match
match
不只是可以匹配模式,多模式匹配,甚至在后面加上条件。
这里需要分类的是- 多模式之间,属于同一组
- 条件检查作用于全部模式
- 逻辑
|
之间,为短路关系
题解
从这里可以看出来,最后肯定是打印的4
。
其中(x, _)
和(_, x)
分别要进行check(x)
检测。
检测过程中会打印1
和2
。
最终结果是124
答案
124
本作品采用《CC 协议》,转载必须注明作者和本文链接