我正在尝试将两个不同数组中的每个元素相乘。我的意思是,我有array1 = [i1 , i2]
和array2 = [j1, j2]
,所以我需要做(i1 * j1) + (i2 * j2)
。如何在Rust中解决这个问题?我一直在研究《书》,发现了一些可能有帮助的方法:map
和fold
。但是我有点迷茫。预先感谢!
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];
}
答案 0 :(得分:2)
混合使用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));
}