常州网站制作建设,成都企业网站建设及公司ppt,wordpress 游戏 模板下载,做学校法人年度报告的网站枚举类型#xff0c;简称枚举#xff0c;允许列举所有可能的值来定义一个类型。
1、定义枚举#xff1a;
枚举类型#xff1a;已知所有可能的值#xff0c;并且所有值的出现是互斥的#xff0c;即每次只能取一种可能的值#xff0c;才使用枚举类型。 示例#xff1a;…枚举类型简称枚举允许列举所有可能的值来定义一个类型。
1、定义枚举
枚举类型已知所有可能的值并且所有值的出现是互斥的即每次只能取一种可能的值才使用枚举类型。 示例声明一个枚举
enum IpAddrKind{V4,V6,
}使用IpAddrKind中的两个变体来创建实例
let four IpAddrKind::V4;
let six IpAddrKind::V6;注枚举的变体全部处于其标识符的命名空间内并使用两个冒号将标识符和变体分隔开。 枚举允许直接将其相关联的数据嵌入枚举变体内这样就可以更简单的表达意思。示例
enum IpAddr{V4(String),V6(String),
}
let home IpAddr:V4(String::from(127.0.0.1));
let loopback IpAddr::V6(String::from(::1));可以直接将数据附加到枚举的每个变体中这样就不需要额外的使用结构体了。 使用枚举还可以让每个变体拥有不同类型和数量的关联数据。 示例
enum IpAddr{V4(u8,u8,u8,u8),V6(String),
}
let home IpAddr::V4(127.0.0.1);
let loopback IpAddr::V6(String::from(::1));2、Option枚举
在Rust中虽然没有空值的概念但是却提供了一个拥有类似概念的枚举可以使用它来标识一个值的无效或缺失。这个枚举就是OptionT它在标准库中的定义如下
enum OptionT{Some(T),None,
}这里的T表示一种泛型即可以指代任意类型的数据。 因为OptionT和TT表示任意数据类型是不同的类型因此编译器不允许像使用普通值一样去直接使用OptionT的值。
3、控制流运算符match:
Rust中存在一个控制流运算符match它允许将一个值与一系列的模式相比较并根据匹配的模式执行相应的代码。模式可以由字面量、变量名、通配符和其他组成。 示例
enum Coin {Penny,Nickel,Dime,Quarter,
}
fn value_in_cents(coin:Coin) - u32{match coin{Coin::Penny 1,Coin::Nickel 5,Coin::Dime 10,Coin::Quarter 25,}
}使用match进行匹配时必须穷举所有的可能来确保代码的合法性。
4、_通配符
当不需要处理所有可能的值的时候可以使用_通配符去匹配其余值。 示例
let some_u8_value 0u8;
match some_u8_value{1 println!(one),3 println!(three),5 println!(five),_ (),
}这里的_可以匹配任何值将_放在其他分支后面可以帮助匹配所有没有被显式指定出来的情形。
5、简单控制流if let
if let能够用来处理只关心某一种匹配而忽略其他匹配的情况。 示例 使用match进行匹配
let some_u8_value Some(0u8);
match some_u8_value{Some(3) println!(three),_ (),
}使用if let进行改写
let some_u8_value Some(0u8);
if let Some(3) some_u8_value{println!(three),
}