rename 元结构体 to 单元结构体

pull/494/merge
sunface 3 years ago
parent ced884ae86
commit aac4a1f9ea

@ -150,7 +150,7 @@ fn main() {
当然,我们也可以用结构体的方式来定义这些消息:
```rust
struct QuitMessage; // 元结构体
struct QuitMessage; // 元结构体
struct MoveMessage {
x: i32,
y: i32,

@ -181,16 +181,16 @@ println!("{:?}", user1);
元组结构体在你希望有一个整体名称,但是又不关心里面字段的名称时将非常有用。例如上面的 `Point` 元组结构体众所周知3D点是 `(x, y, z)` 形式的坐标点,因此我们无需再为内部的字段逐一命名为:`x`, `y`, `z`
## 元结构体(Unit-like Struct)
还记得之前讲过的基本没啥用的[单元类型](../base-type/char-bool.md#单元类型)吧?元结构体就跟它很像,没有任何字段和属性,但是好在,它还挺有用。
## 元结构体(Unit-like Struct)
还记得之前讲过的基本没啥用的[单元类型](../base-type/char-bool.md#单元类型)吧?元结构体就跟它很像,没有任何字段和属性,但是好在,它还挺有用。
如果你定义一个类型,但是不关心该类型的内容, 只关心它的行为时,就可以使用 `元结构体`
如果你定义一个类型,但是不关心该类型的内容, 只关心它的行为时,就可以使用 `元结构体`
```rust
struct AlwaysEqual;
let subject = AlwaysEqual;
// 我们不关心 AlwaysEqual 的字段数据,只关心它的行为,因此将它声明为元结构体,然后再为它实现某个特征
// 我们不关心 AlwaysEqual 的字段数据,只关心它的行为,因此将它声明为元结构体,然后再为它实现某个特征
impl SomeTrait for AlwaysEqual {
}

@ -172,7 +172,7 @@ impl Human {
}
```
这里,不仅仅两个特征 `Pilot``Wizard``fly` 方法,就连实现那两个特征的 `Human` 元结构体,也拥有一个同名方法 `fly` (这世界怎么了,非要这么卷吗?程序员何苦难为程序员,哎)。
这里,不仅仅两个特征 `Pilot``Wizard``fly` 方法,就连实现那两个特征的 `Human` 元结构体,也拥有一个同名方法 `fly` (这世界怎么了,非要这么卷吗?程序员何苦难为程序员,哎)。
既然代码已经不可更改,那下面我们来讲讲该如何调用这些 `fly` 方法。

Loading…
Cancel
Save