终於到第十天拉,距离结束基础语法只剩几天了,有没有感到不舍阿
目前计画跟原本预先想的差不多,但是我在想要不要先介绍几个常用的套件@@
让我再想个几天吧。
今天要介绍的是 enum 列举体
那这个东西让 Rust 的简洁度更高,也有了更多的表现力
这次我也会联合错误处理也就是 Result<T, E> 跟 Option 下去说明。
因为这些错误处理就是依靠 enum 构成的。
首先看个简单的例子
pub enum Option<T> {
None,
Some(T),
}
那上面就是 Option 的架构,可以发现其实上面也利用了之前所讲的泛型
和结构体不同的是 列举体 里面存的是值 而不是类型。也就是说利用 enum 可以在 Rust 中实现 多型。
enum Sizes {
Big,
Medium,
Small,
}
上面就是个以大小区分的 列举体。
那可以这样使用
let owo = Sizes::Big;
match owo {
Big => {println!("Ur Big")},
Medium => {println!("U Good")},
Small => {println!("eat more")},
}
那以上是最基础的使用方式,但是绝对不只於此
因为他是可以带资料的。
enum Event {
KeyPress(char),
Click { x: i64, y: i64 },
}
fn input(event: Event) {
match event {
Event::KeyPress(c) => {println!("{}", c)}
Event::Click{x, y} => {
println!("{} {}", x, y);
}
}
}
就像这样使用
以上是枚举的基础利用
那我刚刚讲到 Result 跟 Option 是为了错误处理而出现地。
而 Result 跟 Option 差别在哪我下面会提到
Result 是拿来干嘛的?
Result 是使用列举体去构成的 原码如下:
enum Result<T, E> {
Ok(T),
Err(E),
}
你可以发现 有个 Ok 跟 Err 废话
Ok 表示的是这个能够成功使用
Err 则反
有点类似 try...catch
那麽如果说只想拿 Ok 的情况略过撰写 match 的话可以使用 unwrap 或是加个问号
还有一个 expect 但是 expect 是当 err 出现时会跑到但是不取值
也就是说可以直接拿来看是否是因为这个部分而导致程序错误喔。
那其实 Result 跟 Option 的差别并不大差别只在於
一个是抓错误进行处理,一个是当没有回传时进行处理。
今天大概这样 晚安各位
有问题请提问
<<: 新新新手阅读 Angular 文件 - Interpolation(2) - Day14
>>: [Day12] 学 Reactstrap 就离 React 更近了 ~ Component 的引入&使用
在经历上一部函数与类别的摧残後,这两天就来教一些比较温和的程序吧~ 今天的影片内容为介绍常见的档案格...
同步(Synchronous)与非同步(Asynchronous) 在理解执行上下文与呼叫堆叠之後,...
痛点用在很多应用场景,在叙述使用者经验时,就是在替代用户在使用上不满,或是离开产品服务的关键要点。现...
Kubernetes 开源有 6 年时间了,为什么还要写一篇 Kubernetes 入门的文章?”...
介绍 首先介绍什麽是 Teachable Machine, Teachable Machine 是一...