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刘金,转载请注明原文链接。感谢!

相关推荐
传奇开心果编程8 小时前
【Rust入门练中学】第6课:结构体与方法
开发语言·rust·结构体·编程语言理论·结构体方法·编程通用语言
本地化文档9 小时前
cutile-rs-book-l10n
rust·gpu·nvidia·cuda·sphinx·crowdin
qq_4069810312 小时前
大白话rust系列09 函数调用两次有什么错?
开发语言·python·rust
康小旺13 小时前
TypeScript 编译器开始卷 Rust 了:Cloudflare 的 tsrs 到底想干嘛?
rust·typescript
Norna13 小时前
时间轮的 +1,为什么最后只留在顶层
rust
轻舟技术A19 小时前
Rust 重写 Pi:会话启动耗时降 91%,就绪内存少 78%
开发语言·后端·rust
unconditional20 小时前
外部命令改不了你的 shell:sdkm 怎么做到"回车即生效"
rust·开源
程工造Agent20 小时前
从 0 到 1 学 Codex 源码:为什么 let b = a 之后,a 就不能用了?
rust·ai编程
Norna20 小时前
方差怎么会是 −32:nushell math variance 的一次数值修复
rust
JavaPub-rodert20 小时前
王仕宇分享:Oxigraph 是什么?用 Rust + RocksDB 搭一个轻量 RDF/SPARQL 知识图谱数据库
数据库·rust·知识图谱