change `()` to `()`

pull/508/head
Rustln 3 years ago committed by GitHub
parent 3656f356e1
commit 6d6a1a9041
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -20,7 +20,7 @@
在其它语言中,我们用 `var a = "hello world"` 的方式给 `a` 赋值,也就是把等式右边的 `"hello world"` 字符串赋值给变量 `a` ,而在 Rust 中,我们这样写: `let a = "hello world"` ,同时给这个过程起了另一个名字:**变量绑定**。 在其它语言中,我们用 `var a = "hello world"` 的方式给 `a` 赋值,也就是把等式右边的 `"hello world"` 字符串赋值给变量 `a` ,而在 Rust 中,我们这样写: `let a = "hello world"` ,同时给这个过程起了另一个名字:**变量绑定**。
为何不用赋值而用绑定呢(其实你也可以称之为赋值,但是绑定的含义更清晰准确)?这里就涉及 Rust 最核心的原则——**所有权**,简单来讲,任何内存对象都是有主人的,而且一般情况下完全属于它的主人,绑定就是把这个对象绑定给一个变量,让这个变量成为它的主人(聪明的读者应该能猜到,在这种情况下,该对象之前的主人就会丧失对该对象的所有权),像极了我们的现实世界,不是吗? 为何不用赋值而用绑定呢(其实你也可以称之为赋值,但是绑定的含义更清晰准确)?这里就涉及 Rust 最核心的原则——**所有权**,简单来讲,任何内存对象都是有主人的,而且一般情况下完全属于它的主人,绑定就是把这个对象绑定给一个变量,让这个变量成为它的主人聪明的读者应该能猜到,在这种情况下,该对象之前的主人就会丧失对该对象的所有权,像极了我们的现实世界,不是吗?
至于为何要采用所有权这种复杂的东东,先别急,等时机合适,我们会为你详细道来。 至于为何要采用所有权这种复杂的东东,先别急,等时机合适,我们会为你详细道来。
@ -93,9 +93,9 @@ The value of x is: 5
The value of x is: 6 The value of x is: 6
``` ```
选择可变还是不可变,更多的还是取决于你的使用场景,例如不可变可以带来安全性,但是丧失了灵活性和性能(如果你要改变,就要重新创建一个新的变量,这里涉及到内存对象的再分配)。而可变变量最大的好处就是使用上的灵活性和性能上的提升。 选择可变还是不可变,更多的还是取决于你的使用场景,例如不可变可以带来安全性,但是丧失了灵活性和性能(如果你要改变,就要重新创建一个新的变量,这里涉及到内存对象的再分配)。而可变变量最大的好处就是使用上的灵活性和性能上的提升。
例如,在使用大型数据结构或者热点代码路径(被大量频繁调用)的情形下,在同一内存位置更新实例可能比复制并返回新分配的实例要更快。使用较小的数据结构时,通常创建新的实例并以更具函数式的风格来编写程序,可能会更容易理解,所以值得以较低的性能开销来确保代码清晰。 例如,在使用大型数据结构或者热点代码路径(被大量频繁调用)的情形下,在同一内存位置更新实例可能比复制并返回新分配的实例要更快。使用较小的数据结构时,通常创建新的实例并以更具函数式的风格来编写程序,可能会更容易理解,所以值得以较低的性能开销来确保代码清晰。
### 变量解构 ### 变量解构
@ -154,7 +154,7 @@ const MAX_POINTS: u32 = 100_000;
>在实际使用中,最好将程序中用到的硬编码值都声明为常量,对于代码后续的维护有莫大的帮助。如果将来需要更改硬编码的值,你也只需要在代码中更改一处即可。 >在实际使用中,最好将程序中用到的硬编码值都声明为常量,对于代码后续的维护有莫大的帮助。如果将来需要更改硬编码的值,你也只需要在代码中更改一处即可。
### 变量遮蔽(shadowing) ### 变量遮蔽shadowing
Rust 允许声明相同的变量名,在后面声明的变量会遮蔽掉前面声明的,如下所示: Rust 允许声明相同的变量名,在后面声明的变量会遮蔽掉前面声明的,如下所示:

Loading…
Cancel
Save