This commit is contained in:
murphy 2017-05-12 22:58:23 +08:00
parent 99cc253553
commit 558e8af136

View File

@ -18,7 +18,7 @@ get Chapter 8 for editing. /Carol -->
### 定义一个带有自定义行为的Trait ### 定义一个带有自定义行为的Trait
不过在Rust语言中我们可以定义一个 `Draw` trait包含名为 `draw` 的方法。我们定义一个由*trait对象*组成的vector绑定了某指针的trait比如`&`引用或者一个`Box<T>`智能指针。 不过在Rust语言中我们可以定义一个 `Draw` trait包含名为 `draw` 的方法。我们定义一个由*trait对象*组成的vector绑定了某指针的trait比如`&`引用或者一个`Box<T>`智能指针。
之前提到,我们不会称结构体和枚举为对象,以区分其他语言的结构体和枚举对象。结构体或者枚举成员中的数据和`impl`块中的行为是分开的而其他语言则是数据和行为被组合到一个对象里。Trait 对象更像其他语言的对象因为他们将其指针指向的具体对象作为数据将在trait 中定义的方法作为行为组合在了一起。但是trait 对象和其他语言是不同的,我们不能向一个 trait 对象增加数据。trait 对象不像其他语言那样有用:它们的目的是允许从公有行为上抽象。 之前提到,我们不会称结构体和枚举为对象,以区分其他语言的结构体和枚举对象。结构体或者枚举成员中的数据和`impl`块中的行为是分开的而其他语言则是数据和行为被组合到一个对象里。Trait 对象更像其他语言的对象因为他们将其指针指向的具体对象作为数据将在trait 中定义的方法作为行为组合在了一起。但是trait 对象和其他语言是不同的,我们不能向一个 trait 对象增加数据。trait 对象不像其他语言那样有用:它们的目的是允许从公有行为上抽象。