面试题答案
一键面试// 定义Operation特征
trait Operation {
fn calculate(&self, a: f64, b: f64) -> f64;
}
// 实现Add结构体
struct Add;
impl Operation for Add {
fn calculate(&self, a: f64, b: f64) -> f64 {
a + b
}
}
// 实现Subtract结构体
struct Subtract;
impl Operation for Subtract {
fn calculate(&self, a: f64, b: f64) -> f64 {
a - b
}
}
// 实现Multiply结构体
struct Multiply;
impl Operation for Multiply {
fn calculate(&self, a: f64, b: f64) -> f64 {
a * b
}
}
// 实现Divide结构体
struct Divide;
impl Operation for Divide {
fn calculate(&self, a: f64, b: f64) -> f64 {
if b == 0.0 {
panic!("Division by zero");
}
a / b
}
}
// 泛型函数perform_operation
fn perform_operation<O: Operation>(a: f64, b: f64, op: &O) -> f64 {
op.calculate(a, b)
}
你可以使用以下方式测试这些函数:
fn main() {
let add_op = Add;
let subtract_op = Subtract;
let multiply_op = Multiply;
let divide_op = Divide;
let a = 10.0;
let b = 5.0;
println!("Addition: {}", perform_operation(a, b, &add_op));
println!("Subtraction: {}", perform_operation(a, b, &subtract_op));
println!("Multiplication: {}", perform_operation(a, b, &multiply_op));
println!("Division: {}", perform_operation(a, b, ÷_op));
}