From 9e89039afd9f1bd4d3f090618b2731eee7137ba4 Mon Sep 17 00:00:00 2001 From: Kirin Date: Sat, 5 Nov 2022 13:23:57 +0800 Subject: [PATCH] Update method.md (#3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充章节 #### 方法名跟结构体字段名相同 的示例内容 --- src/basic/method.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/basic/method.md b/src/basic/method.md index 50439123..1d3ddd8f 100644 --- a/src/basic/method.md +++ b/src/basic/method.md @@ -142,6 +142,8 @@ fn main() { 用这种方式,我们可以把 `Rectangle` 的字段设置为私有属性,只需把它的 `new` 和 `width` 方法设置为公开可见,那么用户就可以创建一个矩形,同时通过访问器 `rect1.width()` 方法来获取矩形的宽度,因为 `width` 字段是私有的,当用户访问 `rect1.width` 字段时,就会报错。注意在此例中,`Self` 指代的就是被实现方法的结构体 `Rectangle`。 +> 注:如果直接修改运行上述代码会发现可以正常访问到 `width` 字段而不通过 `width()` 方法,是因为结构体的变量在模块`Module`内默认是公开的,在模块`Module`之外才是私有的。关于可见性的内容会在 [模块 Module | 代码可见性](https://course.rs/basic/crate-module/module.html#%E4%BB%A3%E7%A0%81%E5%8F%AF%E8%A7%81%E6%80%A7) 部分说明。 + > ### `->` 运算符到哪去了? > > 在 C/C++ 语言中,有两个不同的运算符来调用方法:`.` 直接在对象上调用方法,而 `->` 在一个对象的指针上调用方法,这时需要先解引用指针。换句话说,如果 `object` 是一个指针,那么 `object->something()` 和 `(*object).something()` 是一样的。