本文介绍了将两个不同数组中的元素相乘的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将两个不同数组中的每个元素相乘。我的意思是,我有 array1 = [i1,i2] array2 = [j1,j2] (i1 * j1)+(i2 * j2)。如何在Rust中解决这个问题?我一直在研究《书》,发现了一些可能有帮助的方法:地图折叠。但是我有点迷路了。

I'm trying to multiply each element from two different arrays. I mean, I have array1 = [i1 , i2] and array2 = [j1, j2] so I need to do (i1 * j1) + (i2 * j2). How can I approach this in Rust? I've been researching in The Book and saw some methods that possibly could help: map and fold. But I'm a bit lost. Thanks in advance!

fn sum_product(a: [f32], b: [f32]) -> [f32] {
    unimplemented!();
}

fn main() {
    let a: [f32; 2] = [2.0, 3.0];
    let b: [f32; 2] = [0.0, 1.0];
}


推荐答案

混合使用 zip map

fn sum_product(a: &[f32], b: &[f32]) -> f32 {
    a.iter()
        .zip(b.iter())
        .map(|(a, b)| a * b)
        .sum()
}

fn main() {
    let a = [2.0, 3.0];
    let b = [0.0, 1.0];

    assert_eq!(3.0, sum_product(&a, &b));
}

这篇关于将两个不同数组中的元素相乘的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-14 08:58