面试题答案
一键面试- 不可变变量作为参数的优势:
- 安全性:不可变变量在函数内部不能被修改,这有助于防止意外的修改,增强代码的安全性和可预测性。例如,在多线程环境中,如果一个变量被多个线程共享且不可变,就不用担心某个线程意外修改它而导致数据竞争等问题。
- 简单性:函数只专注于使用传入的数据,而不用考虑数据被修改的情况,使得函数逻辑更加简单清晰。
- 示例代码:
- 使用不可变参数:
fn add_immutable(a: i32, b: i32) -> i32 {
a + b
}
- 使用可变参数:
fn add_mutable(a: &mut i32, b: &mut i32) -> i32 {
*a += 1;
*b += 1;
*a + *b
}
- 调用示例:
fn main() {
let num1 = 2;
let num2 = 3;
let result_immutable = add_immutable(num1, num2);
println!("不可变参数结果: {}", result_immutable);
let mut num3 = 2;
let mut num4 = 3;
let result_mutable = add_mutable(&mut num3, &mut num4);
println!("可变参数结果: {}", result_mutable);
println!("num3 被修改后的值: {}", num3);
println!("num4 被修改后的值: {}", num4);
}
在上述代码中,add_immutable
函数使用不可变参数,函数内部不会对参数进行修改,调用者可以明确知道参数不会被改变。而add_mutable
函数使用可变参数,函数内部对参数进行了修改,调用者需要注意这种修改可能带来的影响。