首页 > 解决方案 > 为数组赋值但值不变?

问题描述

我有以下代码:

if (x % 2 == 0) ^ (y % 2 == 1) ^ (z % 2 == 0) {
    grid_box.weights[x][y][x] = 1.0;
    assert_eq!(grid_box.weights[x][y][x], 1.0);
} else {
    grid_box.weights[x][y][z] = 0.0;
    assert_eq!(grid_box.weights[x][y][x], 0.0); // Assertion failed, 1.0 != 0.0
}

然而,即使我在前一行中将网格位置分配为零,第二个断言也失败了。进一步的实验表明,网格中的先前值似乎对新值应该是什么产生了影响,即使赋值应该完全覆盖该值。

标签: rust

解决方案


您有一个错字,您分配给grid_box.weights[x][y][z]并从中读取grid_box.weights[x][y][x]。替换zx


推荐阅读