学习新时代编程语言Rust-16使用编号提取裤子

2024-01-22 18:50

本文主要是介绍学习新时代编程语言Rust-16使用编号提取裤子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上一期我们使用Vector做为一个可变容量的箱子存放裤子,为了便于区分裤子还给裤子添加上了编号。小胖现在想使用编号从箱子里获取裤子该怎么办呢?!
main
  是不是可以编写一个for循环遍历箱子中的每一条裤子,如果裤子的开头编号跟我们需要的编号一致就返回这条裤子。我们编写代码实现下。
code
这里我们使用字符串的starts_with方法来判断一个字符串是不是以某个字符串为开始的,编写好后运行看下效果,从命令行的输出可以看出这样是能按照裤子的编号找到裤子的。
cargo run
但每次找裤子都要把箱子翻一遍,这样是不是太费事了,能不能直接按编号提取出裤子而不需要遍历其他裤子呢?!
 这里我们可以使用另一个集合类型HashMap,Map里存储的是Key、Value形式的数据,可以使用Key提取出相应的Value。所以我们可以使用裤子编号做为key,使用裤子做为Value.这个文件里代码有点多了,我们后面会讲当项目大了后怎么使用模块把代码拆分到不同的文件方便维护管理,现在我们就先简单的把裤子复制到一个新项目里。接下来我们使用HashMap关联的new方法创建一个HashMap类型的箱子,再使用hashmap的insert方法把裤子放到箱子里。当我们需要按照编号提取一个裤子时只需要调用hashmap的get方法。这样就返回了一个Option类型的结果。Option类型的值有两种情况一种是找到了相应编号的裤子返回一个包含裤子的Some, 一种是没有找到这个编号的裤子返回一个None.这跟我们的现实需求也很吻合吧?我们的箱子里未必有你给的编号的裤子,所以Rust提供了一个Option类型来分别表示找到了和没找到的情况。我们在变量的名称后面加opt后缀这样方便从名称中看出它是一个Option。这里可以使用match语句匹配option,如果找到了就是Some 在命令行输出找到了编号为code的裤子,如果没有找到就是None,我们输出没有找到编号为code的裤子。
保存运行下代码。出错了吧?
cargo run
我们就是要让大家看下出错信息,这是报了俩个错误,我们先解决上面的一个一个来,这里的意思是语法出错了,在Rust中的模式匹配语法跟Scala语言不一样不需要case关键字,我们把case关键字去掉再运行看下效果。错误不一样了吧?
cargo run
这次还是一个语法错误,提示我们这里需要个逗号或者点或者问号或者右花括号,但我们给了个分号。我们把分号改为逗号,再运行看下效果。
cargo run
这个错误我们以前遇到过吧,在println!宏里我们使用花括号站了位置,却没有提供变量去填充位置,就像高铁占座的,没那么多人非要占那么多位置,在Rust中也是不允许的,所以我们这里要把code补上。再运行看下效果。

cargo run

这次就只剩下一个HashMap找不到的错误了吧,这是因为HashMap类型默认是不加载的所以我们需要使用use关键字告诉Rust加载HashMap. 
use
有同学可能会问,是不是还得在Cargo.toml文件里添加依赖啊,这个不需要因为HashMap是Rust官方提供的类型并且包含在Rust安装包中,所以就不需要Cargo再下载了也就不需要再配置Cargo.toml文件了。再运行看下效果。

error
这次又出个新错误吧,错误信息提示我们get方法需要个引用类型的参数,我们可以使用&code而不是code,编译器的编译信息还是说的很明白的吧?我们在code前添加&号,保存再运行看下效果。
cargo run
这次编译器告诉我们inert这个方法找不到啊,而且还提示我们是不是要使用的是insert方法啊,这里我们的方法名敲错了吧,Rust编译器的提示信息是不是比较友好,不像你的女朋友生气了只发脾气不理你就是不告诉你为什么生气,你自己猜去吧!
我们修改好代码保存重新运行看下效果:
cargo run
这次控制台输出了找到了编号为2的裤子。我们可以跟使用vector遍历的输出做一个对比
cargo run
是不是清爽了很多?直接按编号取出相应的裤子,不需要把整个箱子的裤子都遍历一遍。
这一期我们给大家展示了HashMap的基本用法,还有常见的错误信息。在实际软件开发中我们也经常会遇到编译错误,所以要锻炼看懂错误信息解决错误的能力。遇到错误不要害怕不要回避要试着去解决。
接下来我们留一个

练习题:

小胖的裤子分为3个品牌,分别是A,B,C牌,我们现在需要使用品牌名称获取同品牌的所有裤子,我们这个箱子改怎么设计代码该怎么编写呢?

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

51cto学院:
51cto

免费进群交流

KeepLearning

There is no such thing as perfect time. Or perfect conditions. Time to start is now. From where you are. With what you have. Start Now.

这篇关于学习新时代编程语言Rust-16使用编号提取裤子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/633908

相关文章

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

使用Python实现高效的端口扫描器

《使用Python实现高效的端口扫描器》在网络安全领域,端口扫描是一项基本而重要的技能,通过端口扫描,可以发现目标主机上开放的服务和端口,这对于安全评估、渗透测试等有着不可忽视的作用,本文将介绍如何使... 目录1. 端口扫描的基本原理2. 使用python实现端口扫描2.1 安装必要的库2.2 编写端口扫

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

SQL Server使用SELECT INTO实现表备份的代码示例

《SQLServer使用SELECTINTO实现表备份的代码示例》在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误,在SQLServer中,可以使用SELECTINT... 在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SE