MST

星途 面试题库

面试题:Rust闭包在矩阵加法运算中的实现

请使用Rust语言,利用闭包实现两个矩阵的加法运算。假设矩阵以二维向量`Vec<Vec<i32>>`的形式表示,要求编写一个函数,该函数接收两个矩阵作为参数,并返回它们相加后的结果矩阵。阐述闭包在这个过程中是如何提高代码的可读性和灵活性的。
16.1万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn add_matrices(matrix1: &Vec<Vec<i32>>, matrix2: &Vec<Vec<i32>>) -> Vec<Vec<i32>> {
    let mut result = Vec::new();
    let add_row = |row1: &Vec<i32>, row2: &Vec<i32>| {
        row1.iter().zip(row2.iter()).map(|(a, b)| a + b).collect()
    };
    for (i, row1) in matrix1.iter().enumerate() {
        let row2 = &matrix2[i];
        let new_row = add_row(row1, row2);
        result.push(new_row);
    }
    result
}

闭包提高代码可读性和灵活性的阐述:

  1. 可读性
    • 通过定义闭包add_row,将矩阵行相加的逻辑封装起来,使得主函数add_matrices的逻辑更加清晰。在add_matrices函数中,通过调用add_row闭包,可以很直观地看出是在进行矩阵行与行之间的加法操作,而不需要在主函数中嵌入复杂的行相加逻辑,提高了代码的可读性。
  2. 灵活性
    • 闭包add_row可以作为一个独立的单元使用。如果后续有其他矩阵操作也需要进行行相加操作,可以复用这个闭包,而不需要重复编写相同的逻辑。此外,如果行相加的逻辑发生变化,只需要修改闭包add_row中的代码,而不需要在主函数的复杂逻辑中到处寻找相关代码片段进行修改,提高了代码的可维护性和灵活性。