fn main() {
let f = 1;
match f {
foo => {
println!("{}",foo);
}
};
match f {
_ => {
println!("{}",f);
}
};
}
这两场比赛有什么区别吗? (两个都打印1)。有人能指出我第一场比赛的记录吗? Rust书(直到第9章)似乎只提到占位符_
,但不是“你可以把任何名字(例如,在这种情况下为foo
)作为匹配条件”。
这些只是模式。 Patterns are documented in more details further in the book。有许多形式的模式:
1
,FOO
enum
destructuring:Some(y)
,None
struct
解构:Point { x, y }
(42, foo)
foo
,foo @ (42, bar)
1 ... 42
_
这两个例子之间没有区别,但是,命名模式在match
表达式中通常不被视为顶级模式,而是在子模式中,例如Some(foo)
。然而,命名模式对于函数参数和let
绑定非常常见。