新贵 Rust(3) — 枚举

今天分享的是枚举 enum, 下面我们定义了一个简单 Direction 枚举。定义枚举的方法和struct 类似。在 Direction 枚举中定义了 Up, Down, Left, Right 字段。

字段变量可以是 tuple类型如 Up, 也可以是 struct 类型如 Down

我们定义个 Point struct 来作为 Up 字段变量的类型,可以想象 Up 在枚举 Direction 作用域内,也就是命名空间。如图中 Direction::Up

我们再定义一个 Keys 枚举类型,大家发现在 struct 和 Direction 上都有 #[derive(Debug], 这表示该枚举和结构支持调试输出。

我们可以为 Direction 扩展一个 match_direction 方法。其中我们用 match (类似 switch,不过比 switch 强大)类判断调用 Direction 哪个字段,其中的_ 大家可以将他想象为占位符,代表任何值,这里有许多新知识点,例如 match 。大家不用急,我随后给大家详细介绍。

然后我们在 main 函数中测试一下 match_direction 方法,然后输出一下 k 。如果我们没有为结构和枚举定义前加上 #[derive(Debug],就无法输出 k。

查看输出中有许多警告 warning 如下图,

如果我们不想看到上图中出现警告,我们可以在文件开头处,添加 #![allow(dead_code)]

输出为Upkey("Pressed w"),如果我们只想看到 "pressed w" 而需要看到 Upkey() 内容,我们可以定义一个 destruct 函数,

这样我们就仅输出我们想要的 Pressed w。

在 destruct 中 ref 类似于 &,看下面例子大家就应该明白了

看一看我们通过枚举实现面向对象中的多态(area 方法)

输出内容

你可能感兴趣的:(新贵 Rust(3) — 枚举)