假设你有一个枚举
enum Expr {
binExp, unExp, Literal, Group
}
Run Code Online (Sandbox Code Playgroud)
并且您想调用 上的方法Expr
。
你会宁愿 :
match Expr {
Expr::binExp => todo!(),
Expr::unExp => todo!(),
Expr::Literal => todo!(),
Expr::Group => todo!()
}
Run Code Online (Sandbox Code Playgroud)
或者
if let Expression::binExp = self {
todo!()
} else if let Expression::unExp = self {
todo!()
} else if let Expression::Lit = self {
todo!()
} else if let Expression::Group(e) = self {
todo!()
} else {
todo!()
}
Run Code Online (Sandbox Code Playgroud)
换句话说,是match
并行操作吗?我知道if/else
将按顺序遍历每个表达式,在遇到错误时对其进行评估,最后停止。
match 语句是模仿这种行为还是直接跳转到正确的模式?我特别问这个问题是因为match
可以匹配多个模式,但始终选择首先匹配的模式。因此,match
在这方面听起来确实可能是连续的。