当前位置: 首页 > 科技观察

通过编写一个简单的游戏来学习Rust

时间:2023-03-21 22:22:28 科技观察

您可以通过尝试用多种语言编写一个简单的游戏来开始编程。当你想学习一门新的编程语言时,不妨关注一下编程语言的共性。变量、表达式和语句的概念是大多数编程语言的基础。一旦你理解了它们,你就可以开始弄清楚其余的了。因为编程语言往往有相似之处,一旦你了解了一种语言,你就可以通过了解它的差异来学习另一种语言的基础知识。学习一门新语言的一个好方法是使用可以用来练习的标准程序。这使您可以专注于语言,而不是程序的逻辑。在本系列文章中,我使用了一个“猜数字”程序,计算机从1到100之间选择一个数字让你猜。程序循环直到你猜对了数字。该程序练习了几个编程语言概念:变量输入输出条件评估循环这是学习新编程语言的一个很好的动手实验。安装Rust您可以使用Rustup安装Rust工具链,或者您可以在线试用Rust而无需在本地安装。如果您在本地安装,您应该定期使用rustupupdate更新它以保持您的工具链最新,并使用cargoupdate使您的库保持最新。用Rust语言猜数字Rust是一种使任何人都能构建可靠且高效软件的语言。您可以通过编写“猜数字”游戏的Rust版本来探索Rust。第一步是编写Cargo.toml文件。您可以使用cargonew命令生成框架Cargo.toml。这几乎是启动Rust项目的最佳方式。$cargonewguess$cdguess$ls-1Cargo.tomlsrc/Cargo.toml文件给你的包一个名字,给它一些元数据,最重要的是,指定它依赖于randcrate。[package]name="guess"version="2020.11.0"authors=["MosheZadka"]edition="2018"#在https://doc.rust查看更多密钥及其定义-lang.org/cargo/reference/manifest.html[dependencies]rand="*"Rust中的许多东西不是由语言或标准库提供的。相反,您可以从一些可以做很多事情的外部板条箱中获取它们。程序逻辑在src/main.rs:userand::Rng;使用std::io::BufRead;fnmain(){让mutrng=rand::thread_rng();让random=rng.gen_range(1..101);println!("猜一个1到100之间的数字");对于std::io::stdin().lock().lines()中的行{letparsed=line.ok().as_deref().map(str::parse::);ifletSome(Ok(guess))=parsed{matchguess{_ifguessprintln!("Toolow"),_ifguess>random=>println!("Toohigh"),_=>{println!("没错");休息;}}}}}前两行代码声明了你要做什么。在此示例中,rand::Rng生成一个猜测,traitstd::io::BufRead启用从标准输入读取。Rust代码的入口点在main()函数中,因此下一步是定义main()。要为变量赋值,请将let放在首位,然后是变量的名称,然后是=符号。这会创建一个不可变变量。Rust中的大多数变量是不可变的,但rng对象必须是可变的(mut)。例如,语句letrandom=0将零值分配给随机变量。函数的第一行创建一个线程安全的Rng对象并将其赋值给变量rng。Rust建立在线程和内存安全的基础上,因此您必须在开始编写代码时牢记这些。程序的下一行读取函数gen_range()的结果并将其分配给名为random的变量。该函数采用最小值(包含)和上限(不包含)。要同时包含上限,您可以用等号标记更大的数字(例如,1...=100),或者您可以将上限设置为比您预期的最大值大1。在这种情况下,范围是1到100,使游戏具有足够的挑战性。中央循环遍历std::io::stdin()中的行。Rust要求您用Result换行,因为各种异常可能会阻止该行被读取。有时可能无法将一行解析为整数。此代码使用条件模式匹配来忽略所有会导致错误的行:letparsed=line.ok().as_deref().map(str::parse::);ifletSome(Ok(guess))=parsed{//...}第一行创建一个Result,...>对象,因为它可能在读取或解析步骤中失败。由于下一行仅在Some(Ok(guess))上匹配,因此只要行的结果是非匹配值,它就会跳过if语句。这是一种忽略错误的有效方法。Rust支持条件表达式和流程控制,例如循环。在“猜数字”游戏中,只要猜出的值不等于随机数,Rust就会一直循环下去。if语句的主体包含Rust的match语句的三路分支。虽然match最常用于模式匹配,但它也可以检查任意条件。在这种情况下,如果猜测正确,则打印一条适当的消息并中断循环。示例输出现在您已经编写了Rust程序,您可以运行它来玩“猜数字”游戏。每次运行程序时,Rust都会选择一个不同的随机数,因此请不断猜测,直到找到正确的那个。$cargorun编译猜测v2020.11.0(/Users/mzadka/src/guess)在0.70秒内完成开发[未优化+调试信息]目标运行`target/debug/guess`猜测1到10050之间的数字太高25太高12太低18太high15Toohigh13Toolow14没错典型的方式就是使用cargorun来测试程序。最终,您可能会使用cargobuild来构建一个可执行文件并在两个单独的步骤中运行它。学习Rust,“猜数字”游戏,是学习新编程语言的一个很好的入门程序,因为它以相当直接的方式练习了几个常见的编程概念。通过用不同的编程语言实现这个简单的游戏,您可以展示这些语言的一些核心概念并比较它们的细节。你有最喜欢的编程语言吗?您将如何使用它来编写“猜数字”游戏?请继续关注本系列文章,查看您可能感兴趣的其他编程语言的示例!