方法类似于函数,因为它们在start
和then
函数名称中包含fn
关键字。 方法还包含参数和返回值。 但是,当在struct
上下文中声明方法时,方法语法与正常函数不同。这些方法的第一个参数始终是self
,它表示调用函数的实例。
定义方法
在struct
上下文中声明方法时定义方法。
struct Square
{
a : u32,
}
impl Square
{
fn area(&self)->u32
{
self.a * self.a
}
}
fn main()
{
let square = Square{a:10};
print!("Area of square is {}", square.area());
}
执行上面示例代码,得到以下结果 –
Area of square is 100
当在struct
上下文中声明方法时,定义实现块内的方法,即impl
块。
impl Square
{
fn area(&self)->u32
{
self.a * self.a
}
}
第一个参数是签名中的self
,可在主体内的任何位置。
在这里,使用方法语法来调用area()
函数。 方法语法是一个实例,后跟点运算符,方法名称,参数和任何参数。
square.area();
square
是实例,area()
是函数名称。
注意:如果想要更改调用该方法的实例,那么使用
&mut self
而不是&self
作为第一个参数。
方法语法的优点:
使用方法语法而不是函数的主要优点是,与实例相关的所有数据都放在impl
块中,而不是放在impl
块之外的其它位置。