面试题答案
一键面试Rust常函数的主要特性
- 不改变调用者状态:常函数不能修改调用它的实例的任何字段,这确保了数据的不可变性,有助于编写更安全、可预测的代码。
- 可用于不可变引用:常函数可以被具有不可变引用的实例调用。这对于只读操作非常有用,例如查询数据或执行计算,而不会改变对象的状态。
结构体方法中常函数确保不修改结构体状态的示例
struct Point {
x: i32,
y: i32,
}
impl Point {
// 常函数示例
fn distance_from_origin(&self) -> f64 {
((self.x.pow(2) + self.y.pow(2)) as f64).sqrt()
}
}
fn main() {
let p = Point { x: 3, y: 4 };
let dist = p.distance_from_origin();
println!("Distance from origin: {}", dist);
}
在上述代码中,distance_from_origin
是 Point
结构体的常函数。&self
表示该函数接受 Point
实例的不可变引用。函数体中只是读取 x
和 y
字段进行计算,而不会修改它们,从而确保不会改变结构体的状态。