枚举就是列出有穷序列的型别
透过enum关键字新增了新的Browser型别在范例中列出了一个组项分别为
Firefox,Chrome,IE,Safari内部值分别为0u8,1u8,2u8,3u8表示
通常都是以整数为内部关联值
透过枚举写以下的代码
enum Browser {
Firefox,
Chrome,
Ie,
Safari,
}
let browser = Browser::Ie;
match browser {
Browser::Firefox => println!("F"),
Browser::Chrome => println!("C"),
Browser::Ie => println!("I"),
Browser::Safari => println!("S"),
}
不要编写这样的代码
const FIREFOX: u8 = 0;
const CHROME: u8 = 1;
const IE: u8 = 2;
const SAFARI: u8 = 3;
let browser = IE;
if browser == FIREFOX {
println!("F");
} else if browser == CHROME {
println!("C");
} else if browser == IE {
println!("I");
} else if browser == SAFARI {
println!("S");
}
使用Use的方式
// 显式的指定要使用的枚举
use Browser::{Chrome, Firefox, Ie, Safari};
let browser = Ie;
match browser {
Firefox => println!("F"),
Chrome => println!("C"),
Ie => println!("I"),
Safari => println!("S"),
}
// 自动的使用Browser内部所有的枚举
use Browser::*;
let browser = Ie;
match browser {
Firefox => println!("F"),
Chrome => println!("C"),
Ie => println!("I"),
Safari => println!("S"),
}
使用带有C风格的用法
enum Browser {
Firefox,
Chrome,
Ie,
Safari,
}
println!("{}", Browser::Firefox as i32)
枚举不能使用"=="运算子做比较
let browser = Browser::Ie;
if browser == Browser::Ie {
println!("{}", "hello word")
}
// 编译时会出错
// binary operation `==` cannot be applied to type `Browser`
<<: Progressive Web App Badging API 入门实做 (8)
>>: JavaScript Day 12. 每个元素都做运算的 map()
CPU Scheduling Algorithm tags: IT铁人 作用 因为同时处理很多的pr...
material-UI 有制式的 Table之外 还有像传统 Table一般 用TableConta...
本文同步刊於 Medium 目录 前言 铁人赛 系列文提到的项目 比赛结束之後 区块链 近期规划 未...
今天大概会聊到的范围 Testing Compose 的 Test 属於 UI Test ,在执行...
API 写法差异 在 client-side & server-side 两端,使用 ws ...