美文网首页程序员
新贵 Rust(3) — 枚举

新贵 Rust(3) — 枚举

作者: zidea | 来源:发表于2019-01-20 18:02 被阅读137次

今天分享的是枚举 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) — 枚举

    今天分享的是枚举 enum, 下面我们定义了一个简单 Direction 枚举。定义枚举的方法和struct 类似...

  • Rust语言教程(9) - if let表达式与枚举进阶

    Rust语言教程(9) - if let表达式与枚举进阶 枚举复习 前面我们介绍了Rust中的枚举类型,以及通过枚...

  • 新贵 Rust(1)

    首先要明确的一点就是 rust 是系统级别的底层开发语言。与 c++ 处于同一层面。rust 有可能在将来逐步取代...

  • Rust 枚举

    枚举 枚举,也被称作enums。枚举允许你通过列举可能的值来定义一个类型。 定义枚举 枚举值 可以使用任一成员来调...

  • 新贵Rust (2)—Ownership

    Rust 的 ownership 系统是他的最主要的特征。只有理解了ownership系统,才能真正算是入门。 &...

  • 2020 Rust 入门 枚举

    甜点 我们有时候感觉很简单东西,想一看而过,这样还是不够的。我们还是要动手试一试,只有动手才是自己的。 今天主要分...

  • 2020 Rust 入门 枚举

    模式匹配是许多函数式编程语言(如Haskell或Scala) 的基础和强大的构建块。对于最初接触面向对象语言来说,...

  • summary

    Rust 并没有空值,不过它确实拥有一个可以编码 存在或不存在概念的枚举。这个枚举是 Option ,而且它...

  • 新贵 Rust — 贪吃蛇(1)

    今天开始用 Rust 写一个小游戏,大家可能都玩过—贪吃蛇,今天就写个贪吃蛇 snake。首先创建一个项目 sna...

  • 枚举模式与match

    1,枚举的定义与基本使用 具体可以参考该文档:https://rust.bootcss.com/ch06-01-d...

网友评论

    本文标题:新贵 Rust(3) — 枚举

    本文链接:https://www.haomeiwen.com/subject/dyfzdqtx.html