diff --git a/zh-CN/src/variables.md b/zh-CN/src/variables.md index 8064350..2bfc02f 100644 --- a/zh-CN/src/variables.md +++ b/zh-CN/src/variables.md @@ -1,10 +1,11 @@ # 变量绑定与解构 ### 绑定和可变性 -🌟 修复下面代码的错误并尽可能少的修改 +🌟 变量只有在初始化后才能被使用 ```rust,editable +// 修复下面代码的错误并尽可能少的修改 fn main() { let x: i32; // 未初始化,但被使用 let y: i32; // 未初始化,也未被使用 @@ -12,11 +13,11 @@ fn main() { } ``` -🌟🌟 完形填空,让代码编译 +🌟🌟 可以使用 `mut` 将变量标记为可变 ```rust,editable +// 完形填空,让代码编译 fn main() { - // 使用合适的变量名替代 __ let __ = 1; __ += 2; @@ -25,9 +26,11 @@ fn main() { ``` ### 变量作用域 -🌟 修复下面代码的错误并使用尽可能少的改变 +🌟 作用域是一个变量在程序中能够保持合法的范围 + ```rust,editable +// 修复下面代码的错误并使用尽可能少的改变 fn main() { let x: i32 = 10; { @@ -38,9 +41,10 @@ fn main() { } ``` -🌟🌟 使用你所掌握的知识来修复错误 -```rust,editable +🌟🌟 +```rust,editable +// 修复错误 fn main() { println!("{}, world", x); } @@ -51,10 +55,11 @@ fn define_x() { ``` ### 变量遮蔽( Shadowing ) -🌟🌟 只允许修改 `assert_eq!` 来让 `println!` 工作(在终端输出 `42`) +🌟🌟 若后面的变量声明的名称和之前的变量相同,则我们说:第一个变量被第二个同名变量遮蔽了( shadowing ) ```rust,editable +// 只允许修改 `assert_eq!` 来让 `println!` 工作(在终端输出 `42`) fn main() { let x: i32 = 5; { @@ -104,12 +109,13 @@ fn main() { ``` ### 变量解构 -🌟🌟 修复下面代码的错误并尽可能少的修改 +🌟🌟 我们可以将 `let` 跟一个模式一起使用来解构一个元组,最终将它解构为多个独立的变量 > 提示: 可以使用变量遮蔽或可变性 ```rust,editable +// 修复下面代码的错误并尽可能少的修改 fn main() { let (x, y) = (1, 2); x += 2; @@ -120,19 +126,19 @@ fn main() { ``` ### 解构式赋值 -🌟🌟 使用两种方式解决问题: +该功能于 Rust 1.59 版本引入:你可以在赋值语句的左式中使用元组、切片或结构体进行匹配赋值。 -- 通过变量遮蔽: 添加 `let` -- 令类型兼容 +🌟🌟 > Note: 解构式赋值只能在 Rust 1.59 或者更高版本中使用 ```rust,editable fn main() { - let (mut x, mut y) = (1.0, 2.0); - (x,y) = (3, 4); - - assert_eq!([x,y],[3, 4]); + let (x, y); + (x,..) = (3, 4); + [.., y] = [1, 2]; + // 填空,让代码工作 + assert_eq!([x,y], __); } ``` \ No newline at end of file