定义方法
让我们把前面实现的获取一个
Rectangle
实例作为参数的area
函数,改写成一个定义于Rectangle
结构体上的area
方法,如示例 5-13 所示:
文件名:src/main.rs
#[derive(Debug)]
struct Rectangle {
width: u32,
height: u32,
}
impl Rectangle {
fn area(&self) -> u32 {
self.width * self.height
}
}
fn main() {
let rect1 = Rectangle {
width: 30,
height: 50,
};
println!(
"The area of the rectangle is {} square pixels.",
rect1.area()
);
}
示例 5-13:在 Rectangle
结构体上定义 area
方法
为了使函数定义于
Rectangle
的上下文中,我们开始了一个impl
块(impl
是 implementation 的缩写),这个impl
块中的所有内容都将与Rectangle
类型相关联。接着将area
函数移动到impl
大括号中,并将签名中的第一个(在这里也是唯一一个)参数和函数体中其他地方的对应参数改成self
。然后在main
中将我们先前调用area
方法并传递rect1
作为参数的地方,改成使用 方法语法(method syntax)在Rectangle
实例上调用area
方法。方法语法获取一个实例并加上一个点号,后跟方法名、圆括号以及任何参数。
注意:本文归作者所有,未经作者允许,不得转载