学习新时代编程语言Rust视频教程-18罗列出所有裤子品牌名称——面向对象之抽象

上一期我们介绍了struct的使用以及使用impl关键字定义方法、类型关联方法,使用println宏输出裤子对象的编 、名称、长度信息。接下来我们接着说裤子。我们先前讲到小胖的裤子分为A/B/C3个品牌,但是在编写代码时我们的裤子名称是使用字符串表示的,也就是说我们可以任意写裤子品牌名称,可能一不小心就把B牌写成了BB牌,把Adidas写成了Adadas。怎么帮助我们不写错品牌名称呢Rust中提供了枚举类型,接下来我们通过代码看下怎么使用枚举类型帮助防止写错品牌名称。
首先使用enum关键字定义一个品牌名称的枚举类型,跟定义struct差不多后面也是使用花括 ,跟定义struct不一样的是,花括 里罗列的是枚举类型的可用值而struct的花括 里是结构体类型的属性信息。我们在花括 中罗列出品牌名称的可用值,也就是A品牌、B品牌和C品牌

接下来我们修改自定义类型Trousers的定义把它的品牌名称从字符串类型改为枚举类型

修改下类型关联函数new的参数定义,把品牌名称从String类型换成Brand枚举类型

这时在创建裤子对象时就不能使用String类型的品牌名称了,只能使用我们我们定义的枚举值,使用枚举类型名称加双冒 加枚举值的形式指定枚举值。

修改好后我们运行看下效果, 了个错误,这个错误我们上一期刚遇到过吧,println宏也不知道怎么输出Brand枚举类型是吧们给Brand类型也添加下derive Debug注解,都使用冒 加问 的形式输出。修改好后在运行看下效果。这次没有 错了,我们可以看到在命令行里输出了裤子的信息,裤子的品牌属性是一个Brand类型的枚举值。如果A品牌还有A1和A2俩个子品牌,我们也想在枚举信息中体现出来怎么办呢们可以让枚举值A携带一个String类型的备注信息

这样我们在使用枚举A时就可以添加一个备注说明是A1还是A2,编写好后保存退出,运行看下效果

内容根据视频整理,相应视频内容可访问

51cto学院:

There is no success without challenges, struggles and setbacks. Never quit.

可以添加微信问问

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年9月15日
下一篇 2019年9月15日

相关推荐