Rust:函数,方法,关联函数有什么区别?

在 Rust 中,函数、方法和关联函数都是用来封装行为的。它们之间的区别主要在于它们的定义和调用方式。

  • 函数(Function):Rust 中的函数与其他语言中的函数概念相似。它们是独立的代码块,可以接受输入参数并返回一个值。函数可以在任何地方定义和调用。
  • 方法(Method):方法与函数类似,但它们是在结构体(struct)中定义的,并且第一个参数必须是 self,表示调用该方法的结构体实例。方法通常用于操作结构体实例的数据或提供实例级别的功能。方法使用 . 语法调用,例如 my_struct.my_method()
  • 关联函数(Associated Function):关联函数与类型相关联,而不是与类型的实例相关联。它们使用 impl 块定义,并使用 :: 语法调用,例如 MyStruct::my_associated_function()。关联函数通常用于创建新的类型实例、提供类型级别的功能或在类型级别上操作数据。

这里有一个简单的 Rust 代码示例,它演示了函数、方法和关联函数的定义和使用:

rust 复制代码
struct Point {
    x: f64,
    y: f64,
}

impl Point {
    // 关联函数
    fn new(x: f64, y: f64) -> Point {
        Point { x, y }
    }

    // 方法
    fn distance(&self, other: &Point) -> f64 {
        let dx = self.x - other.x;
        let dy = self.y - other.y;
        (dx * dx + dy * dy).sqrt()
    }
}

// 函数
fn print_distance(p1: &Point, p2: &Point) {
    let distance = p1.distance(p2);
    println!("The distance between the points is {}", distance);
}

fn main() {
    let p1 = Point::new(0.0, 0.0);
    let p2 = Point::new(3.0, 4.0);
    print_distance(&p1, &p2);
}

在这个示例中,我们定义了一个名为 Point 的结构体,它表示一个二维平面上的点。我们在 impl 块中定义了一个关联函数 new 和一个方法 distance。关联函数 new 用于创建新的 Point 实例,而方法 distance 用于计算两个点之间的距离。

我们还定义了一个独立的函数 print_distance,它接受两个 Point 实例作为参数,并打印它们之间的距离。

main 函数中,我们使用关联函数 new 创建了两个 Point 实例,并使用函数 print_distance 打印它们之间的距离。- from刘金,转载请注明原文链接。感谢!

相关推荐
Pomelo_刘金1 小时前
用 DDD 把「闹钟」需求一点点捏出来
架构·rust·领域驱动设计
Pomelo_刘金2 小时前
Clean Architecture 整洁架构:借一只闹钟讲明白「整洁架构」的来龙去脉
后端·架构·rust
a cool fish(无名)11 小时前
rust-方法语法
开发语言·后端·rust
a cool fish(无名)1 天前
rust-参考与借用
java·前端·rust
叶 落1 天前
[Rust 基础课程]猜数字游戏-获取用户输入并打印
rust·rust基础
RustFS1 天前
RustFS 如何修改默认密码?
rust
景天科技苑1 天前
【Rust线程池】如何构建Rust线程池、Rayon线程池用法详细解析
开发语言·后端·rust·线程池·rayon·rust线程池·rayon线程池
该用户已不存在2 天前
Zig想要取代Go和Rust,它有资格吗
前端·后端·rust
用户1774125612443 天前
不懂装懂的AI,折了程序员的阳寿
rust
量子位3 天前
vivo自研蓝河操作系统内核开源!Rust开发新机遇来了
rust·ai编程