|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
# 枚举
|
|
|
|
|
|
|
|
|
|
枚举(enum或enumeration)允许你通过列举可能的成员来定义一个**`枚举类型`**,例如扑克牌花色:
|
|
|
|
|
枚举(enum或enumeration)允许你通过列举可能的成员来定义一个**枚举类型**,例如扑克牌花色:
|
|
|
|
|
```rust
|
|
|
|
|
enum PokerSuit {
|
|
|
|
|
Clubs,
|
|
|
|
@ -122,7 +122,7 @@ enum IpAddr {
|
|
|
|
|
V6(Ipv6Addr),
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
该例子跟我们之前的扑克牌很像,只不过枚举成员包含的类型更复杂了,变成了结构体:分别通过`Ipv4Addr`和`Ipv4Addr`来定义两种不同的IP数据。
|
|
|
|
|
该例子跟我们之前的扑克牌很像,只不过枚举成员包含的类型更复杂了,变成了结构体:分别通过`Ipv4Addr`和`Ipv6Addr`来定义两种不同的IP数据。
|
|
|
|
|
|
|
|
|
|
从这些例子可以看出,**任何类型的数据都可以放入枚举成员中**: 例如字符串、数值、结构体甚至另一个枚举。
|
|
|
|
|
|
|
|
|
@ -193,7 +193,7 @@ enum Websocket {
|
|
|
|
|
## Option枚举用于处理空值
|
|
|
|
|
在其它编程语言中,往往都有一个`null`关键字,该关键字用于表明一个变量当前的值为空(不是零值,例如整形的零值是0),也就是不存在值。当你对这些`null`进行操作时,例如调用一个方法,就会直接抛出null异常,导致程序的崩溃,因此我们在编程时需要格外的小心去处理这些`null`空值。
|
|
|
|
|
|
|
|
|
|
> Tony Hoare,null的发明者,曾经说过有非常有名的话
|
|
|
|
|
> Tony Hoare,null的发明者,曾经说过一段非常有名的话
|
|
|
|
|
>
|
|
|
|
|
> 我称之为我十亿美元的错误。当时,我在使用一个面向对象语言设计第一个综合性的面向引用的类型系统。我的目标是通过编译器的自动检查来保证所有引用的使用都应该是绝对安全的。不过在设计过程中,我未能抵抗住诱惑,引入了空引用的概念,因为它非常容易实现。就是因为这个决策,引发了无数错误、漏洞和系统崩溃,在之后的四十多年中造成了数十亿美元的苦痛和伤害。
|
|
|
|
|
|
|
|
|
|