【问题标题】:Multiplying elements from two different arrays [duplicate]将两个不同数组中的元素相乘[重复]
【发布时间】:2019-07-08 07:39:21
【问题描述】:

我正在尝试将两个不同数组中的每个元素相乘。我的意思是,我有array1 = [i1 , i2]array2 = [j1, j2] 所以我需要做(i1 * j1) + (i2 * j2)。我如何在 Rust 中解决这个问题?我一直在研究 The Book 并看到了一些可能有帮助的方法:mapfold。但我有点失落。提前致谢!

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];
}

【问题讨论】:

  • 请注意,法语 Boiethios 的答案使用 slices 作为 sum_product 的参数 - 您不能简单地将 [f32] 指定为类型,因为所有数组类型也必须带有大小(如 @ 987654332@ 确实如此)。然而,切片是集合的视图(无论是数组、vec 等),并且不需要明确的大小。
  • 此外,除非您绝对需要,否则请避免在变量上指定显式类型,例如 ab。编译器可以并且将为您解决它们,这样可以节省大量输入:)

标签: arrays rust


【解决方案1】:

混合使用zipmap

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));
}

【讨论】:

    猜你喜欢
    • 2013-11-08
    • 1970-01-01
    • 2021-12-10
    • 2021-08-31
    • 1970-01-01
    • 2018-01-17
    • 2019-02-28
    • 2013-05-02
    相关资源
    最近更新 更多