面试题答案
一键面试fn compare_and_calculate(a: i32, b: i32, c: i32) -> i32 {
if a > b && b > c {
a - b + c
} else {
b - a - c
}
}
在这个函数中,返回类型为i32
,因为a - b + c
和b - a - c
的结果都是i32
类型。
对于错误处理,这里的操作都是基本整数运算,不会出现可恢复的错误,所以不需要特别的错误处理。如果在实际场景中有可能出现错误,比如溢出等,可以考虑使用Result
类型。
在Rust中避免不必要重复代码的方法有:
- 函数封装:如上述代码,将重复的逻辑封装成一个函数,这样在需要使用这个逻辑的地方直接调用函数即可。
- 使用泛型:如果这个逻辑适用于不同类型,而不仅仅是
i32
,可以使用泛型来抽象类型,减少重复代码。例如:
fn compare_and_calculate_generic<T: std::cmp::PartialOrd + std::ops::Add<Output = T> + std::ops::Sub<Output = T>>(a: T, b: T, c: T) -> T {
if a > b && b > c {
a - b + c
} else {
b - a - c
}
}
这里通过泛型T
以及对T
的约束,使得这个函数可以适用于不同类型,只要这些类型满足比较、加法和减法操作。
3. 宏:对于更复杂的重复代码结构,可以使用宏来抽象,不过宏相对复杂,使用时需要谨慎。