[英]Can I match on all enum variants that have the same shape of their values?
我有一个枚举:
enum MyEnum {
A(i32),
B(i32),
C,
D,
// ...
}
我可以同时匹配A
和B
吗?
let a = MyEnum::A(1);
match a {
_(n) => { // do something for all variants which have one i32 value
}
_ => { // ignore the rest
}
};
有什么办法可以做到这一点? 我是否必须匹配所有变体并为每个变体应用相同的“主体”?
不,您想要的语法是不可能的; 我不知道如果您有多个变体,这些变体具有相同数量的不同类型的字段,那么该语法将如何工作:
enum MyEnum {
A(bool),
B(String),
}
我是否必须匹配所有变体并为每个变体应用相同的“主体”?
是的,但您可以使用模式在单个匹配中匹配它们 arm:
match a {
MyEnum::A(n) | MyEnum::B(n) => {
// use `n`
}
_ => {}
};
或者等效的if let
:
if let MyEnum::A(n) | MyEnum::B(n) = a {
// use `n`
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.