面试题答案
一键面试常函数常见使用场景
- 数据读取:当函数只需要读取数据,而不需要修改数据时,使用常函数可以保证数据的完整性和不可变性。例如,在实现一个计算某个数据集合统计信息(如平均值、总和等)的函数时,只需要读取集合中的数据,不需要修改它们。
- 借用数据:在 Rust 中,为了避免数据所有权转移带来的复杂性,常函数允许在函数中借用数据,使得函数可以使用数据而不获取所有权,函数调用结束后,数据的所有权仍归调用者。这在多个函数需要使用相同数据时非常有用。
示例代码
// 定义一个结构体
struct Point {
x: i32,
y: i32,
}
// 在结构体上定义常函数
impl Point {
fn distance(&self) -> f64 {
(self.x * self.x + self.y * self.y) as f64).sqrt()
}
}
fn main() {
let p = Point { x: 3, y: 4 };
// 调用常函数
let dist = p.distance();
println!("The distance from the origin is: {}", dist);
}
在上述代码中:
- 定义了一个
Point
结构体,包含两个i32
类型的字段x
和y
。 - 在
Point
结构体的impl
块中定义了一个常函数distance
,它接受&self
作为参数,表示对Point
实例的不可变引用。函数内部计算并返回该点到原点的距离,在这个过程中不会修改Point
实例的数据。 - 在
main
函数中创建了一个Point
实例p
,然后调用p.distance()
计算距离,并打印结果。这个过程保证了p
的数据不可变性。