|
|
|
@ -188,7 +188,7 @@ fn main() {
|
|
|
|
|
|
|
|
|
|
## 关联函数
|
|
|
|
|
|
|
|
|
|
现在大家可以思考一个问题,如果为一个结构体定义一个构造器方法?也就是接受几个参数,然后构造并返回该结构体的实例。其实答案在开头的代码片段中就给出了,很简单,不使用`self`中即可。
|
|
|
|
|
现在大家可以思考一个问题,如何为一个结构体定义一个构造器方法?也就是接受几个参数,然后构造并返回该结构体的实例。其实答案在开头的代码片段中就给出了,很简单,不使用`self`中即可。
|
|
|
|
|
|
|
|
|
|
这种定义在 `impl` 中且没有 `self` 的函数被称之为**关联函数**: 因为它没有 `self`,不能用 `f.read()` 的形式调用,因此它是一个函数而不是方法,它又在`impl` 中,与结构体紧密关联,因此称为关联函数。
|
|
|
|
|
|
|
|
|
@ -213,7 +213,7 @@ impl Rectangle {
|
|
|
|
|
因为是函数,所以不能用`.`的方式来调用,我们需要用`::`来调用,例如 `let sq = Rectangle::new(3,3);`。这个方法位于结构体的命名空间中:`::` 语法用于关联函数和模块创建的命名空间。
|
|
|
|
|
|
|
|
|
|
## 多个impl定义
|
|
|
|
|
Rust允许我们为一个结构体定义多个`impl`块,目的是提供更多的灵活性和代码组织性,例如当方法多了后,可以把相关的方法组织在同个`impl`块中,那么就可以形成多个`impl`块,各自完成一块儿目标:
|
|
|
|
|
Rust允许我们为一个结构体定义多个`impl`块,目的是提供更多的灵活性和代码组织性,例如当方法多了后,可以把相关的方法组织在同一个`impl`块中,那么就可以形成多个`impl`块,各自完成一块儿目标:
|
|
|
|
|
```rust
|
|
|
|
|
# #[derive(Debug)]
|
|
|
|
|
# struct Rectangle {
|
|
|
|
|