1. 方法与函数的区别:
在 Rust 中,方法与函数的区别在于方法是与某个类型关联的函数,并使用 self 参数。函数则是独立的、没有关联到特定类型的功能。
2. 在结构体上定义方法:
// 定义一个名为 `Person` 的结构体
struct Person {
name: String,
age: u32,
}
impl Person {
// 定义一个关联到 Person 结构体的方法
fn new(name: &str, age: u32) -> Person {
Person {
name: String::from(name),
age,
}
}
// 另一个方法,用于打印 Person 的信息
fn print_info(&self) {
println!("Name: {}, Age: {}", self.name, self.age);
}
}
fn main() {
// 使用 Person::new 方法创建结构体实例
let person = Person::new("Alice", 25);
// 调用关联到结构体的方法
person.print_info();
}
在上述例子中,我们在 Person 结构体上定义了两个方法:new 和 print_info。new 方法是一个关联到 Person 结构体的关联函数,用于创建结构体的新实例。print_info 方法则是关联到实例的方法,用于打印结构体的信息。
3. 在枚举上定义方法:
// 定义一个名为 `TrafficLight` 的枚举
enum TrafficLight {
Red,
Yellow,
Green,
}
impl TrafficLight {
// 定义一个关联到 TrafficLight 枚举的方法
fn next(&self) -> TrafficLight {
match self {
TrafficLight::Red => TrafficLight::Green,
TrafficLight::Yellow => TrafficLight::Red,
TrafficLight::Green => TrafficLight::Yellow,
}
}
}
fn main() {
let current_light = TrafficLight::Red;
// 调用关联到枚举的方法
let next_light = current_light.next();
println!("Next traffic light: {:?}", next_light);
}
在这个例子中,我们在 TrafficLight 枚举上定义了一个方法 next,用于返回下一个交通灯的状态。
方法语法使得与特定类型关联的行为更加自然和组织化,同时也提高了代码的可读性和可维护性。
转载请注明出处:http://www.pingtaimeng.com/article/detail/6798/Rust