定义方法
让我们把前面实现的获取一个
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方法。方法语法获取一个实例并加上一个点号,后跟方法名、圆括号以及任何参数。
注意:本文归作者所有,未经作者允许,不得转载