From dec9ca2247c3ff48bc52a0af6c88551695fe3268 Mon Sep 17 00:00:00 2001 From: "feijie.zheng" Date: Wed, 21 Aug 2024 15:17:26 +0800 Subject: [PATCH] =?UTF-8?q?rust=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md" | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git "a/\347\275\221\347\253\231\345\211\215\347\253\257/Rust\345\255\246\344\271\240\347\254\224\350\256\260/README.md" "b/\347\275\221\347\253\231\345\211\215\347\253\257/Rust\345\255\246\344\271\240\347\254\224\350\256\260/README.md" index 32133d8a0..e2c41a01c 100644 --- "a/\347\275\221\347\253\231\345\211\215\347\253\257/Rust\345\255\246\344\271\240\347\254\224\350\256\260/README.md" +++ "b/\347\275\221\347\253\231\345\211\215\347\253\257/Rust\345\255\246\344\271\240\347\254\224\350\256\260/README.md" @@ -247,13 +247,16 @@ - 我们可以定义不以 self 为第一参数的关联函数(因此不是方法),因为它们并不作用于一个结构体的实例 - 1. 使用结构体名和 `::` 语法来调用这个关联函数:比如 `let sq = Rectangle::square(3);`。这个函数位于结构体的命名空间中::: 语法用于关联函数和模块创建的命名空间。 - 2. 关键字 Self 在函数的返回类型中代指在 impl 关键字后出现的类型 + 1. 使用结构体名和`::`语法来调用这个关联函数:比如 `let sq = Rectangle::square(3);`。这个函数位于结构体的命名空间中:`::`语法用于关联函数和模块创建的命名空间。 + 2. 关键字`Self`在函数的返回类型中代指在 impl 关键字后出现的类型 我们可以选择将方法的名称与结构中的一个字段相同。Rust 知道我们指的是方法 width。当我们不使用圆括号时,Rust 知道我们指的是字段 width。 每个结构体都允许拥有多个 impl 块。 +
+ e.g. + ```rust struct Rectangle { width: u32, @@ -264,6 +267,9 @@ fn area(&self) -> u32 { self.width * self.height } + } + // 允许多个 + impl Rectangle { // 允许与字段同名 fn width(&self) -> bool { self.width > 0 @@ -271,7 +277,6 @@ fn can_hold(&self, other: &Rectangle) -> bool { self.width > other.width && self.height > other.height } - // 不是方法 fn square(size: u32) -> Self { Self { @@ -307,7 +312,7 @@ println!("{}", sq.width) } ``` - +
1. if表达式`if-else`(`else if`)、`match` `if 条件表达式arms {}`,都是表达式,返回代码块的值。