1. 方法
1.1 简介
- 方法与函数类似:它们使用 fn 关键字和名称声明,可以拥有参数和返回值,同时包含在某处调用该方法时会执行的代码。
- 不过方法与函数是不同的,方法是在结构体(或者枚举、trait 对象)的上下文中被定义的。
- 为了使方法位于指定结构体的上下文中,需要将方法放置在该结构体的
impl
块中。 - 方法的第一个参数总是
self
,它代表调用该方法的结构体实例。
1.2 格式
定义一个结构体的方法示例如下:
代码语言:javascript复制struct Rectangle {
width: u32,
height: u32,
}
// 定义 Rectangle 的方法
impl Rectangle {
fn area(&self) -> u32 {
self.width * self.height
}
}
2. 关联函数
2.1 简介
- 关联函数与结构体相关联,同样在
impl
块中定义。它和方法的不同在于它不以self
作为参数,因此它不是一个结构体的实例。 - 关联函数经常被用作返回一个结构体新实例的构造函数。
- 使用结构体名和
::
语法来调用关联函数。::
语法用于关联函数和模块创建的命名空间。
2.2 格式
定义一个结构体的关联函数示例如下:
代码语言:javascript复制struct Rectangle {
width: u32,
height: u32,
}
// 定义 Rectangle 的方法
impl Rectangle {
fn area(&self) -> u32 {
self.width * self.height
}
fn square(size: u32) -> Rectangle {
Rectangle { width: size, height: size }
}
}