match是一个灵活性极高的语法。可以有效的丢掉if else屎山带来的维护麻烦,且可以用它来实现别的语言的try_catch。
首先需要枚举(不能使用结构体,结构体的类型并不具有唯一性)
接着实体化
这样coin变量就是Coin::Number的实体了
这里match coin的意思是匹配coin的类型
如果是Coin::Number就返回str类型的1元
如果是Coin::Flower就返回str类型的牡丹
等价代码就是
if coin == Number{"1元"}
else if coin ==Flower{"牡丹"}
这样是不是好看很多了呢?
这里的完整代码是
fn main(){
enum Coin{
Number,
Flower
}
let coin = Coin::Number; ‣coin: Coin
let a = match coin{ ‣a: &str
Coin::Number => "1元",
Coin::Flower => "牡丹"
};
println!("{}",a);
}