mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-23 21:20:42 +08:00
RP
@Cubik65536 https://linux.cn/article-15935-1.html 关于你 ID 中的引号,我修改了几次程序,都无法去掉,现在还找不到问题所在。
This commit is contained in:
parent
0f22507219
commit
10bcdb360b
@ -3,13 +3,15 @@
|
||||
[#]: author: "Pratham Patel https://itsfoss.com/author/pratham/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: "Cubik65536"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-15935-1.html"
|
||||
|
||||
Rust 基础系列 #8:编写里程碑 Rust 程序
|
||||
======
|
||||
|
||||
![][0]
|
||||
|
||||
到目前为止,我们已经讲解了包括 [变量、可变性、常量][1]、[数据类型][2]、[函数][3]、[if-else 语句][4] 和 [循环][5] 在内的一些关于 Rust 编程的基础知识。
|
||||
|
||||
在 Rust 基础系列的最后一章里,让我们现在用 Rust 编写一个程序,使用这些主题,以便更好地理解它们在现实世界中的用途。让我们来编写一个相对简单的程序,用来从水果市场订购水果。
|
||||
@ -54,21 +56,21 @@ fn main() {
|
||||
|
||||
有三个新元素需要告诉你。所以让我们对这些新元素进行浅层次的探索。
|
||||
|
||||
#### 1. 理解 `use` 关键字
|
||||
#### 1. 理解 use 关键字
|
||||
|
||||
在这个程序的第一行,你可能已经注意到我们使用(哈哈!)了一个叫做 `use` 的新关键字。Rust 中的 `use` 关键字类似于 C/C++ 中的 `#include` 指令和 Python 中的 `import` 关键字。使用 `use` 关键字,我们从 Rust 标准库 `std` 中“导入”了 `io`(输入输出)模块。
|
||||
在这个程序的第一行,你可能已经注意到我们“使用”(哈哈!)了一个叫做 `use` 的新关键字。Rust 中的 `use` 关键字类似于 C/C++ 中的 `#include` 指令和 Python 中的 `import` 关键字。使用 `use` 关键字,我们从 Rust 标准库 `std` 中“导入”了 `io`(输入输出)模块。
|
||||
|
||||
> LCTT 译注:“使用”在原文中为“use”,与新介绍的关键字一样。
|
||||
|
||||
你可能会想知道为什么我们在可以使用 `println` 宏来将某些内容输出到标准输出时,导入 _io_ 模块是必要的。Rust 的标准库有一个叫做 `prelude` 的模块,它会自动被包含。该模块包含了 Rust 程序员可能需要使用的所有常用函数,比如 `println` 宏。(你可以在[这里][6]阅读更多关于 `std::prelude` 模块的内容。)
|
||||
你可能会想知道为什么我们在可以使用 `println` 宏来将某些内容输出到标准输出时,导入 `io` 模块是必要的。Rust 的标准库有一个叫做 `prelude` 的模块,它会自动被包含。该模块包含了 Rust 程序员可能需要使用的所有常用函数,比如 `println` 宏。(你可以在 [这里][6] 阅读更多关于 `std::prelude` 模块的内容。)
|
||||
|
||||
Rust 标准库 `std` 中的 `io` 模块是接受用户输入所必需的。因此,我们在程序的第一行添加了一个 `use` 语句。
|
||||
|
||||
#### 2. 理解 Rust 中的 String 类型
|
||||
|
||||
在第 11 行,我创建了一个新的可变变量 `user_input`,正如它的名字所表示的那样,它将被用来存储用户输入。但是在同一行,你可能已经注意到了一些新的东西(哈哈,又来了!)。
|
||||
在第 11 行,我创建了一个新的可变变量 `user_input`,正如它的名字所表示的那样,它将被用来存储用户输入。但是在同一行,你可能已经注意到了一些“新的”东西(哈哈,又来了!)。
|
||||
|
||||
> LCTT 译注:“新的”在原文中为“new”,在第 11 行的代码中,原作者使用了 String::new() 函数,所以此处的梗与“使用”一样,原作者使用了一个在代码中用到的单词。
|
||||
> LCTT 译注:“新的”在原文中为“new”,在第 11 行的代码中,原作者使用了 `String::new()` 函数,所以此处的梗与“使用”一样,原作者使用了一个在代码中用到的单词。
|
||||
|
||||
我没有使用双引号(`""`)声明一个空字符串,而是使用 `String::new()` 函数来创建一个新的空字符串。
|
||||
|
||||
@ -82,7 +84,7 @@ Rust 标准库 `std` 中的 `io` 模块是接受用户输入所必需的。因
|
||||
|
||||
`sdtin()` 函数返回一个终端的输入句柄。`read_line()` 函数抓住这个输入句柄,然后,正如它的名字所暗示的那样,读取一行输入。这个函数接受一个可变字符串的引用。所以,我传入了 `user_input` 变量,通过在它前面加上 `&mut`,使它成为一个可变引用。
|
||||
|
||||
> ⚠️ `read_line()` 函数有一个 _怪癖_。这个函数在用户按下回车键之后**_停止_**读取输入。因此,这个函数也会记录换行符(`\n`),并将一个换行符存储在你传入的可变字符串变量的结尾处。
|
||||
> ⚠️ `read_line()` 函数有一个 _怪癖_。这个函数在用户按下回车键之后 **停止** 读取输入。因此,这个函数也会记录换行符(`\n`),并将一个换行符存储在你传入的可变字符串变量的结尾处。
|
||||
|
||||
所以,请在处理它时要么考虑到这个换行符,要么将它删除。
|
||||
|
||||
@ -505,6 +507,8 @@ fn price_grapes(quantity: f64) -> f64 {
|
||||
|
||||
Rust 基础系列到此结束。欢迎你的反馈。
|
||||
|
||||
*(题图:MJ/6d486f23-e6fe-4bef-a28d-df067ef2ec06)*
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/milestone-rust-program/
|
||||
@ -512,7 +516,7 @@ via: https://itsfoss.com/milestone-rust-program/
|
||||
作者:[Pratham Patel][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[Cubik65536](https://github.com/Cubik65536)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
@ -523,4 +527,5 @@ via: https://itsfoss.com/milestone-rust-program/
|
||||
[3]: https://linux.cn/article-15855-1.html
|
||||
[4]: https://linux.cn/article-15896-1.html
|
||||
[5]: https://linux.cn/article-15908-1.html
|
||||
[6]: https://doc.rust-lang.org/std/prelude/index.html?ref=itsfoss.com
|
||||
[6]: https://doc.rust-lang.org/std/prelude/index.html
|
||||
[0]: https://img.linux.net.cn/data/attachment/album/202306/23/114333ni9fkzpykmz37zpu.jpg
|
Loading…
Reference in New Issue
Block a user